запись вывода оболочки Python в файл - PullRequest
2 голосов
/ 11 октября 2011

Очень простой вопрос.Я использую оболочку IDLE Python для запуска своих скриптов Python.Я использую следующий тип структуры

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

Есть ли простой способ вывода результатов в файл?Что-то вроде

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

Спасибо

Ответы [ 2 ]

3 голосов
/ 11 октября 2011
$ 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 * () семейство функций в модуле os.Итак

>>> import os
>>> os.system("./x")
1 #<-- output from ./x
0 #<-- ./x's return code
>>> quit()
$
3 голосов
/ 11 октября 2011

Так говорит документация:

Стандартный вывод определяется как файловый объект с именем stdout во встроенном модуле sys.

Таким образом, вы можете изменить стандартный вывод следующим образом:

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