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!
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
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'
Method 2
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()
Method 3
print(args, file=f1) is the python 3.x syntax.
For python 2.x use print >> f1, args.
Method 4
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"
Method 5
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
Method 6
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.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0