如何将终端输出写入文件
我想把脚本的结果保存到一个文件里。比如说,下面是我的脚本:
#!/usr/bin/env python
i=0
while i<10:
a=raw_input('Write a number')
print 'Result%s'%str(2*a)
i+=1
我想把打印出来的值保存到文件中。我知道在脚本里可以用 f=open()...
这种方式来实现,但我想通过终端的输出方式来保存。我听说可以用 subprocess
这个模块,但我不太确定这样做是否正确。
3 个回答
21
python file.py &> out.txt
这段代码会把所有的输出,包括错误信息,都保存到一个叫 out.txt 的文件里。
25
你可以在终端中使用 >
将输出重定向到一个文件里:
python your_script.py > output.txt
22
在我看来,这是一种正确的Python写法,不依赖于系统的命令行:
import sys
f = open("test.out", 'w')
sys.stdout = f
print "test"
f.close()
在Python中,你可以改变默认的 stdout
对象。只需要把你想要的东西赋值给 sys.stdout
。我觉得这个对象只需要有一个 write
方法(虽然我不太确定)。
这样做就可以了:
import sys
f = open("test.out", 'w')
sys.stdout = f
i=0
while i<10:
a=raw_input('Write a number')
print 'Result%s'%str(2*a)
i+=1
f.close()
这基本上和 0605002 提出的建议是一样的,适用于支持他使用的语法的系统,但这是用纯Python实现的,应该更具可移植性。
还有一种更符合Python风格的方法,正如评论中提到的:
import sys
with open("test.out", 'w') as f:
sys.stdout = f
i=0
while i<10:
a=raw_input('Write a number')
print 'Result%s'%str(2*a)
i+=1
当然,你可以重构你的“客户端代码”,把它做成一个函数或者其他形式。