将Python shell输出写入文件

时间:2011-10-11 15:57:58

标签: python shell python-idle

非常简单的问题。我正在使用IDLE Python shell来运行我的Python脚本。我使用以下类型的结构

import sys
sys.argv = ['','fileinp']
execfile('mypythonscript.py')

是否有将结果输出到文件的简单方法?像

这样的东西
execfile('mypythonscript.py') > 'output.dat'

由于

2 个答案:

答案 0 :(得分:3)

所以说文档:

  

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

所以你可以像这样改变标准输出:

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

答案 1 :(得分:3)

$ 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()或exec *()系列函数执行的标准I / O进程流。 os模块。
所以

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