Python 2.7: Print to File

PythonFilePython 2.7

Python Problem Overview


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!

Python Solutions


Solution 1 - Python

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'

Solution 2 - Python

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()

Solution 3 - Python

print(args, file=f1) is the python 3.x syntax. For python 2.x use print >> f1, args.

Solution 4 - Python

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"

Solution 5 - Python

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

Solution 6 - Python

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionalexView Question on Stackoverflow
Solution 1 - PythonGandaroView Answer on Stackoverflow
Solution 2 - PythonSimon BergotView Answer on Stackoverflow
Solution 3 - PythoncitxxView Answer on Stackoverflow
Solution 4 - PythonDaoctorView Answer on Stackoverflow
Solution 5 - PythonDarkMoonView Answer on Stackoverflow
Solution 6 - PythonNam NguyenView Answer on Stackoverflow