-1

我想将 python.py 文件的输出打印到 txt 中,所以我使用以下代码:

python program.py > output.txt

在命令行上进行。

问题是:它只打印 90% 的输出,似乎程序太长了,所以无论如何,有没有办法打印 txt 中的所有输出?就像是:

python program.py > output.txt 1000 lines

这就是代码: http ://pastebin.com/2bSiGKx8

这就是它打印的内容: http ://pastebin.com/r00JteMG

4

3 回答 3

1

在程序中,您可以重定向sys.stdout到文件对象:

import sys
orig_sys = sys.stdout
with open('output.txt','w') as out:
    sys.stdout = out
    #your code here
    print "foo"
    print "bar"

或从命令行参数传递文件名:

#run this as: python program.py output.txt
import sys
filename = sys.argv[1]
orig_sys = sys.stdout
with open(filename,'w') as out:
    sys.stdout = out
    #your code here

python program.py > output.txt也很好,可能是您的代码有问题。

于 2013-06-30T21:12:47.427 回答
0

您遇到的问题可能是 program.py 正在将内容打印到 stdout(用于使用 '>' 进入 output.txt)和 stderr (不会使用 ' 进入 output.txt 文件) >',但如果你使用 '2>' 会进入它)。请参阅有关您尝试执行的操作的答案的问题:如何使用 Bash 将 stdout 和 stderr 重定向并附加到文件中?

于 2013-06-30T21:12:39.393 回答
0

尝试刷新输出缓冲区

import sys
sys.stdout.flush()

如果它不起作用,您可以尝试记录而不是使用打印,尽管我想没有太大的区别!

import logging
logging.basicConfig(format='%(message)s', filename='example.log',level=logging.DEBUG)
logging.debug('what you want to right in your file')
于 2013-06-30T21:57:45.727 回答