Python 2.7:打印到文件

为什么试图直接打印到文件而不是sys.stdout产生以下语法错误:

 Python 2.7.2+ (default, Oct 4 2011, 20:06:09) [GCC 4.6.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> f1=open('./testfile', 'w+') >>> print('This is a test', file=f1) File "<stdin>", line 1 print('This is a test', file=f1) ^ SyntaxError: invalid syntax 

从帮助(__ builtins__)我有以下信息:

 print(...) print(value, ..., sep=' ', end='\n', file=sys.stdout) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. 

那么更改标准stream打印写入的正确语法是什么?

我知道有不同也许更好的方式来写入文件,但我真的不明白为什么这应该是一个语法错误…

一个很好的解释将不胜感激!

如果你想在Python 2中使用printfunction,你必须从__future__导入:

 from __future__ import print_function 

但是你也可以在不使用函数的情况下得到相同的效果:

 print >>f1, 'This is a test' 

print是python 2.X中的一个关键字。 您应该使用以下内容:

 f1=open('./testfile', 'w+') f1.write('This is a test') f1.close() 

print(args, file=f1)是python 3.x语法。 对于Python 2.x使用print >> f1, args

您可以将打印语句导出到文件而无需更改任何代码。 只需打开一个terminal窗口,然后以这种方式运行你的代码:

 python yourcode.py >> log.txt 

在Python 3.0+中, print是一个函数 ,你可以用print(...)调用。 在早期版本中, print是一个陈述 ,你可以用print ...

要打印到3.0以前的Python文件,你需要:

 print >> f, 'what ever %d', i 

>>操作员将打印导向文件f

这会将您的打印redirect到一个文件

 import sys sys.stdout = open("file.xt", "w+") print "this line will redirect to file.txt"