使用python从命令行以txt格式打印输出

使用python从命令行以txt格式打印输出,python,command-line,Python,Command Line,我想将python.py文件的输出打印到txt中,因此我使用以下代码: python program.py > output.txt 这在命令行中进行 问题是:它只打印90%的输出,看起来程序太长了,所以无论如何,有没有办法在txt中打印所有输出?比如: python program.py > output.txt 1000 lines 这就是代码: 这就是它所打印的内容:可能您遇到的问题是program.py同时将内容打印到stdout(使用'>'进入output.txt)和s

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

python program.py > output.txt
这在命令行中进行

问题是:它只打印90%的输出,看起来程序太长了,所以无论如何,有没有办法在txt中打印所有输出?比如:

python program.py > output.txt 1000 lines
这就是代码:


这就是它所打印的内容:

可能您遇到的问题是program.py同时将内容打印到stdout(使用'>'进入output.txt)和stderr(使用'>'不会进入output.txt文件,但如果改用'2>'会进入它)。请参阅关于您尝试执行的操作的答案的问题:

在程序中,您可以将
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也可以,可能是代码有问题。

尝试刷新输出缓冲区

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')

您的命令语法是正确的。您确定python脚本在编写您期望的内容之前并没有失败吗?
python program.py>output.txt
应该可以正常工作。@KlausByskovPedersen是的,事实上编译器会打印所有内容,但是当我使用这个命令时,txt只有4800行,程序有5000行。当我使用python LPIFINAL.py 2>output.txt时,我在命令行中得到了打印,并且创建了.txt,但是它是空的。读这篇文章:我已经尝试了该帖子的解决方案,但是我从5000行中只得到了4800行。我使用了这个命令python LPIFINAL.py>>salida.txt 2>&1我遇到了一些错误,我不知道是什么原因,因为命令行会自动关闭,这对python 2.7有效吗?=)@CarlosWaitforitReichmannVal在py2.x和py3.x中都可以正常工作。很好,我收到了这个错误“值错误:对关闭文件的i/O操作”,这是什么?我尝试了你给我的第一个选项=)thanks@CarlosWaitforitReichmannVal您的代码应该在
with
语句中,而不是在语句之外。因为
with
语句会在
with
块结束时自动关闭文件。谢谢,但当我将代码放入with语句中并运行程序时,我会得到一个无限的“运行”或“加载”循环。。并且output.txt出现了,但是我尝试过了,但它不起作用。这是代码:这是它打印的:@carloswaitforitrichmanval尝试登录