我想将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
答案 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')