将Python Shell输出写入文件

4
非常简单的问题。我使用IDLE Python shell来运行我的Python脚本。我使用以下类型的结构。
import sys
sys.argv = ['','fileinp']
execfile('mypythonscript.py')

有没有一种简单的方法将结果输出到文件中?例如:

execfile('mypythonscript.py') > 'output.dat'

谢谢


2个回答

5
$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) 
[GCC 4.4.3] on linux2

>>> import sys
>>> sys.displayhook(stdout)
<open file '<stdout>', mode 'w' at 0x7f8d3197a150>
>>> x=open('myFile','w')
>>> sys.displayhook(x)
<open file 'myFile', mode 'w' at 0x7fb729060c00>
>>> sys.stdout=x
>>> print 'changed stdout!'
>>> x.close()

$ cat myFile 
changed stdout!

注意: 更改这些对象不会影响通过os.popen()、os.system()或os模块中的exec*()函数执行的进程的标准I/O流。因此,

>>> import os
>>> os.system("./x")
1 #<-- output from ./x
0 #<-- ./x's return code
>>> quit()
$

这行代码 sys.displayhook(stdout) 应该改为 sys.displayhook(sys.stdout) 吗?当我尝试运行这行代码时,会出现 "NameError: name 'stdout' is not defined" 的错误提示。 - mayaPapaya

4

文档如此说:

标准输出被定义为内置模块sys中名为stdout的文件对象。

因此,您可以像这样更改stdout:

import sys
sys.stdout = open("output.dat", "w")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接