使用python从命令行打印输出到txt

时间:2013-06-30 21:04:41

标签: python command-line

我想将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

3 个答案:

答案 0 :(得分: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也没关系,可能是你的代码出了问题。

答案 1 :(得分:0)

你遇到的问题可能是program.py正在打印stdout(用于使用'>'进入output.txt)和stderr(不会进入输出)。 txt文件使用'>',但如果您使用'2>'则会进入该文件。)请参阅此问题,了解您要执行的操作的答案:How can I redirect and append both stdout and stderr to a file with Bash?

答案 2 :(得分: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')