Python 2.7: Print to File
Why does trying to print directly to a file instead of sys.stdout
produce the following syntax error:
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
From help(__builtins__) I have the following info:
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.
So what would be the right syntax to change the standard stream print writes to?
I know that there are different maybe better ways to write to file but I really don't get why this should be a syntax error...
A nice explanation would be appreciated!
If you want to use the print
function in Python 2, you have to import from __future__
:
from __future__ import print_function
But you can have the same effect without using the function, too:
print >>f1, 'This is a test'
print is a keyword in python 2.X. You should use the following:
f1=open('./testfile', 'w+')
f1.write('This is a test')
f1.close()
print(args, file=f1)
is the python 3.x syntax.
For python 2.x use print >> f1, args
.
This will redirect your 'print' output to a file:
import sys
sys.stdout = open("file.txt", "w+")
print "this line will redirect to file.txt"
You can export print statement to file without changing any code. Simply open a terminal windows and run your code in this way:
python yourcode.py >> log.txt