No estoy de acuerdo con algunas de las opiniones expresadas aquí, que print >> f
es redundante y debe evitarse en favor de f.write
.
print
y file.write
son operaciones bastante diferentes. file.write
simplemente escribe directamente una cadena en un archivo. print
es más como "renderizar valores a stdout como texto". Naturalmente, el resultado de representar una cadena como texto es solo la cadena, por lo que print >> f, my_string
y f.write(my_string)
son casi intercambiables (a excepción de la adición de una nueva línea). Pero su elección entre file.write
y print
normalmente debería basarse en lo que está haciendo; ¿Estás escribiendo una cadena en un archivo o estás representando valores en un archivo?
Claro, print
no es estrictamente necesario, en el que puede implementarlo con file.write
. Pero entonces file.write
no es estrictamente necesario, porque puede implementarlo con las operaciones en os
para tratar los descriptores de archivos. Realmente son operaciones en diferentes niveles, y debe usar el que sea más apropiado para su uso (normalmente el nivel en el que está trabajando otro código cercano, o el nivel más alto que no se interpone en su camino).
Siento que la sintaxis print >> f
es bastante horrible, y es un muy buen ejemplo de por qué print
debería haber sido una función desde el principio. Esto se mejoró mucho en Python 3. Pero incluso si está escribiendo el código de Python 2 que planea exportar a Python 3, es mucho más fácil de convertir print >> f, thing1, thing2, thing3, ...
en print(thing1, thing2, thing3, file=f)
que convertir la circunlocución donde gira su propio código para hacer el equivalente de la representación de print
y luego llamar al f.write(text)
. Estoy bastante seguro de que el convertidor semiautomático de Python 2 a Python 3 incluso hará la conversión por usted, lo cual no podría hacer si evita el formulario print >> f
.
Línea inferior: use print
para representar los valores en stdout (o en un archivo). Use f.write
para escribir texto en un archivo.
Es pitónico ser explícito. '.write() 'expresa tu intención más claramente que' >> ' –
Corrígeme si me equivoco, pero con las versiones más nuevas de Python (3.x) print es una * función * (no una construcción de declaración de sintaxis especial) y por lo tanto la ¿El último ni siquiera funcionará en esos? (Realmente no he usado Python desde ... 2.6ish.) –
@pst: muy buen punto. Lo mejor es utilizar el método 'write()'. – voithos