Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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!

like image 377
alex Avatar asked Feb 16 '12 17:02

alex


People also ask

What is the difference between Python 2.7 and Python 3?

Python 2.7 (last version in 2. x ) is no longer under development and in 2020 will be discontinued. Python 3 is a newer version of the Python programming language which was released in December 2008. This version was mainly released to fix problems that exist in Python 2.

What is Fout in Python?

With the mode w as a second parameters, you can write to the file. fout = open('myoutput.txt', 'w') Note: If the file already exists, using open() will clear out everything in the file before writing to it. If the file doesn't exist, the function will create a new file.


2 Answers

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' 
like image 103
Gandaro Avatar answered Sep 22 '22 14:09

Gandaro


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() 
like image 40
Simon Bergot Avatar answered Sep 25 '22 14:09

Simon Bergot