Python 2.7: Imprimir a archivo

¿Por qué intentar imprimir directamente en un archivo en lugar de sys.stdout produce el siguiente error de syntax:

 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 "", line 1 print('This is a test', file=f1) ^ SyntaxError: invalid syntax 

Desde la ayuda (__ builtins__) tengo la siguiente información:

 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. 

Entonces, ¿cuál sería la syntax correcta para cambiar las escrituras de impresión de flujo estándar?

Sé que hay diferentes formas, quizás mejores, de escribir en un archivo, pero realmente no entiendo por qué esto debería ser un error de syntax …

Una buena explicación sería apreciada!

Si desea utilizar la función de print en Python 2, debe importar desde __future__ :

 from __future__ import print_function 

Pero también puedes tener el mismo efecto sin usar la función:

 print >>f1, 'This is a test' 

print es una palabra clave en python 2.X. Deberías usar lo siguiente:

 f1=open('./testfile', 'w+') f1.write('This is a test') f1.close() 

print(args, file=f1) es la syntax de python 3.x. Para Python 2.x use print >> f1, args .

Puede exportar la statement de impresión a un archivo sin cambiar ningún código. Simplemente abre una ventana de terminal y ejecuta tu código de esta manera:

 python yourcode.py >> log.txt 

Esto redireccionará la salida de “impresión” a un archivo:

 import sys sys.stdout = open("file.txt", "w+") print "this line will redirect to file.txt" 

En Python 3.0+, print es una función a la que llamarías print(...) . En una versión anterior, print es una statement que harías con la print ...

Para imprimir en un archivo en Python anterior a 3.0, harías:

 print >> f, 'what ever %d', i 

El >> operador dirige la impresión al archivo f .