Python如何简单地将打印输出redirect到TXT文件,并为每个redirect创build一个新行

我search了谷歌,堆栈溢出和我的Python用户指南,并没有find一个简单的,可行的答案的问题,“如何redirect打印到.txt”文件

我在W7x64机器上创build了一个名为goat.txt的文件,并试图在文件中打印“test”。

并尝试了StackOverflow中提供的以下基于upons的示例。 在这一点上,我不想使用日志模块,因为我没有从基于二进制条件的文档创build一个简单的日志。 打印很简单,但redirect的结果并不是很明显。 我已经search了几个小时,没有结果。

一个简单明了的例子,我可以进入我的interperter是最有帮助的。

此外,任何build议的信息网站赞赏(而不是pydocs,就像我在埃斯孔迪多港阵容采取了一个奇怪的冲浪者,并回答“看波”当被问及“什么时候划船”)。

#import sys #print('test', file=open('C:\\goat.txt', 'w')) fails #print(arg, file=open('fname', 'w')) above based upon this #print>>destination, arg #print>> C:\\goat.txt, "test" Fails based upon the above 

如果您使用的是Python 2.5或更低版本,请打开该文件,然后在redirect中使用该文件对象:

 log = open("c:\\goat.txt", "w") print >>log, "test" 

如果您使用Python 2.6或2.7,则可以使用print作为函数:

 from __future__ import print_function log = open("c:\\goat.txt", "w") print("test", file = log) 

如果您使用的是Python 3.0或更高版本,则可以省略将来的导入。

如果你想全局redirect你的打印语句,你可以设置sys.stdout:

 import sys sys.stdout = open("c:\\goat.txt", "w") print ("test sys.stdout") 

要redirect所有打印输出,可以这样做:

 import sys with open('c:\\goat.txt', 'w') as f: sys.stdout = f print "test" 

一个稍微黑客的方式(这是不同于上面的答案,都是有效的)将只是通过控制台将输出到一个文件。

所以想象你有main.py

 if True: print "hello world" else: print "goodbye world" 

你可以做

 python main.py >> text.log 

然后text.log将得到所有的输出。

如果您已经有一堆打印语句,并且不想单独将其更改为打印到特定文件,则此function十分方便。 只需在上一级执行,并将所有打印文件指向一个文件(唯一的缺点是只能打印到一个目的地)。

将sys.stdoutredirect到打开的文件句柄,然后将所有打印输出转到文件:

 import sys filename = open("outputfile",'w') sys.stdout = filename print "Anything printed will go to the output file"