问题: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.
那么,将标准流打印内容写入更改的正确语法是什么?
我知道有不同的也许更好的写入文件的方法,但是我真的不明白为什么这应该是语法错误…
一个很好的解释将不胜感激!
回答 0
如果要print
在Python 2中使用该函数,则必须从导入__future__
:
from __future__ import print_function
但是,即使不使用该函数,也可以达到相同的效果:
print >>f1, 'This is a test'
回答 1
print是python 2.X中的关键字。您应该使用以下内容:
f1=open('./testfile', 'w+')
f1.write('This is a test')
f1.close()
回答 2
print(args, file=f1)
是python 3.x语法。对于python 2.x使用print >> f1, args
。
回答 3
您可以将打印语句导出到文件,而无需更改任何代码。只需打开终端窗口并以这种方式运行代码:
python yourcode.py >> log.txt
回答 4
这会将您的“打印”输出重定向到文件:
import sys
sys.stdout = open("file.txt", "w+")
print "this line will redirect to file.txt"
回答 5
在Python 3.0+中,print
是一个函数,您可以使用调用它print(...)
。在较早的版本中,print
是一个声明,您可以使用进行声明print ...
。
要在Python 3.0之前的版本中打印到文件,请执行以下操作:
print >> f, 'what ever %d', i
该>>
操作指引打印到文件f
。