Pregunta

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

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

De Help (__ 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 sintaxis correcta para cambiar la impresión de transmisión estándar a las que escribe?

Sé que hay diferentes formas diferentes de escribir en el archivo, pero realmente no entiendo por qué esto debería ser un error de sintaxis ...

¡Una buena explicación sería apreciada!

¿Fue útil?

Solución

Si quieres usar el print función en python 2, debes importar de __future__:

from __future__ import print_function

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

print >>f1, 'This is a test'

Otros consejos

La impresión es una palabra clave en Python 2.x. Debe usar lo siguiente:

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

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

Puede exportar la declaración de impresión al archivo sin cambiar ningún código. Simplemente abra un terminal Windows y ejecute su código de esta manera:

python yourcode.py >> log.txt

Esto redirigirá su 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 un función, que llamarías con print(...). En la versión anterior, print es un declaración, que harías con print ....

Para imprimir en un archivo en Python antes de 3.0, lo haría:

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top