¿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 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 sintaxis correcta para cambiar las escrituras de impresión de flujo estándar?
Sé que hay diferentes formas, tal vez mejores, de escribir en un archivo, pero realmente no entiendo por qué debería ser un error de sintaxis ...
¡Se agradecería una buena explicación!
python
file
python-2.7
alex
fuente
fuente
print()
es la función incorporada de python 3.x, mientras que elprint
operador python <3.x. La publicación muestra2.7.2+
.from __future__ import print_function
? En Python <3, print es una declaración:help(__builtins__)
mostrar eso es un error.__builtins__.__dict__['print'](value, file=f1)
funciona, sin embargo).Respuestas:
Si desea utilizar la
print
función en Python 2, debe importar desde__future__
:Pero también puede tener el mismo efecto sin usar la función:
fuente
print es una palabra clave en python 2.X. Debes usar lo siguiente:
fuente
print(args, file=f1)
es la sintaxis de Python 3.x. Para el uso 2.x pitónprint >> f1, args
.fuente
from __future__ import print_function
. Entonces puede usar la notación clara en Python 2 y 3.AttributeError: 'str' object has no attribute 'write'
con su sintaxis python3f1 = open('path_to_your_file', 'w')
Puede exportar la declaración de impresión a un archivo sin cambiar ningún código. Simplemente abra una ventana de terminal y ejecute su código de esta manera:
fuente
Esto redirigirá su salida de 'impresión' a un archivo:
fuente
En Python 3.0+,
print
es una función , con la que llamaríasprint(...)
. En la versión anterior,print
es una declaración con la que haríasprint ...
.Para imprimir en un archivo en Python anterior a 3.0, haría lo siguiente:
El
>>
operador dirige la impresión al archivof
.fuente