我想将脚本的结果保存到文件中。以下是脚本示例:
#!/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
模块,但不确定是否正确。
我想将脚本的结果保存到文件中。以下是脚本示例:
#!/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
模块,但不确定是否正确。
你可以在终端中使用>
将输出重定向到文件:
python your_script.py > output.txt
open()
函数将内容写入文件,但他想要使用print
而不是write
。但我必须承认,这个意图并不太清楚。也许他根本不想改变他的代码,那么最好的方法就是使用终端或子进程。 - luk32在不依赖于系统 shell 的情况下,这是 Pythonic 的正确方式:
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
当然可以重构你的“客户端代码”并将其转化为一个函数或其他形式。
with
语句!! :-) - Ashwini Chaudharyf.close()
!=)我编辑了问题并添加了更多的Pythonic方式。我希望现在每个人都对答案满意。 - luk32`import sys`
`f = open("test.out", 'w')`
`sys.stdout = f`
`"在终端执行某些操作(由于运行另一个脚本),并将结果保存到文件中"`
`f.close()`
- qwerty12345stdin
、stdout
和stderr
的内容。您可以搜索“如何从Python运行另一个脚本”,有几种方法,而且很可能已经有人问过了。我认为也可以使用import
实现这一点。 - luk32python file.py &> out.txt
这将把所有输出,包括错误信息,重定向到out.txt文件。
rm out.txt; python file.py &> out.txt
- mohaghighat