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
In Python 3.0+, print
is a function, which you'd call with print(...)
. In earlier version, print
is a statement, which you'd make with print ...
.
To print to a file in Python earlier than 3.0, you'd do:
print >> f, 'what ever %d', i
The >>
operator directs print to the file f
.
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"
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()
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'
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