Python中如何将print输出重定向到文件
print ‘\t’.join((ar[‘new’],str(ar[‘good’])))
请问如何修改为同时输出到一个文本文件 good.txt 中,谢谢。
Python中如何将print输出重定向到文件
应该先 open 这个 good.txt ,再 save 吧
在Python里把print输出写到文件,最直接的办法就是用file参数。比如:
with open('output.txt', 'w') as f:
print('Hello, World!', file=f)
这样Hello, World!就会写到output.txt文件里,不会在控制台显示。
如果你想把所有的print输出都重定向,可以临时重定向sys.stdout:
import sys
original_stdout = sys.stdout
with open('output.txt', 'w') as f:
sys.stdout = f
print('这行会写入文件')
print('这行也会写入文件')
sys.stdout = original_stdout # 恢复标准输出
print('这行回到控制台')
更简洁的写法是用contextlib.redirect_stdout(Python 3.4+):
from contextlib import redirect_stdout
with open('output.txt', 'w') as f, redirect_stdout(f):
print('所有print输出都进文件了')
print('现在又回到控制台了')
如果既要写文件又要看控制台输出,可以自己写个类同时处理:
class Tee:
def __init__(self, *files):
self.files = files
def write(self, text):
for f in self.files:
f.write(text)
def flush(self):
for f in self.files:
f.flush()
import sys
with open('output.txt', 'w') as f:
original_stdout = sys.stdout
sys.stdout = Tee(original_stdout, f)
print('这行同时输出到控制台和文件')
sys.stdout = original_stdout
总结:根据需求选合适的方法就行。
content = ‘\t’.join((ar[‘new’],str(ar[‘good’])))
print(content)
with open(‘test.txt’, ‘wb’) as f:
f.write(content)
python your-script.py | tee good.txt
自己定义一个方法,不调用默认的。python<br>def myprint(obj):<br> print(obj)<br> with open('abc.log','w+') as f:<br> f.write(obj)<br>
应该需要 a+吧
为什么不用 logging
现在一般都推荐学习 python3 了哇
测试环境的话, 可以把结果直接重定向到文件
python3 aaa.py >>log.txt
修改 fd
重定向正解
os.dup2(fileno, system.stdout.fileno)
Py3 可以直接定向输入到文件
>>>f = open(‘abc.txt’,‘w’)
>>>print(‘a’,file=f)
我是直接 os.system(“echo ‘xxx’ >> xxx.txt”)
已解决就分享一下解决方法啊
嗯嗯,同意,问题的最后最好总结一下方便来者
python xxx.py > good.txt
py2: print>>f, content
py3: print(content, file=f)
sys.stdout=f
def another_print… print=another_print
c:<a target="_blank" href=“http://1.py” rel=“nofollow noopener”>1.py >> 1.txt
用重定向符的 os syatem 的
都是不求甚解 的

