Varias veces aquí, en SO, he visto a personas usar modos rt
y wt
para leer y escribir archivos.
Por ejemplo:
with open('input.txt', 'rt') as input_file:
with open('output.txt', 'wt') as output_file:
...
No veo los modos documentados , pero dado open()
que no arroja un error, parece que su uso es bastante legal.
¿Para qué sirve y hay alguna diferencia entre usar wt
vs w
y rt
vs r
?
python
file
file-io
read-write
Alecxe
fuente
fuente
wt
vsw
yrt
vsr
-explicit is better than implicit
¿ solo ?r
yrt
...w
no siempre es igual awt
. Uno de esos casos esgzip.open
donde el modo binario es el predeterminado y no el modo texto. Pregunta relacionada: stackoverflow.com/questions/42013083/…El
t
indica el modo de texto, lo que significa que\n
caracteres se traducirán a las terminaciones de línea del sistema operativo del host al escribir en un archivo y de nuevo al leer. La bandera es básicamente ruido, ya que el modo de texto es el predeterminado.Aparte de
U
eso, esos indicadores de modo provienen directamente de lafopen()
función de la biblioteca C estándar , un hecho que se documenta en el sexto párrafo de la documentación de python2 paraopen()
.Hasta donde yo sé,
t
no es y nunca ha sido parte del estándar C, por lo que aunque muchas implementaciones de la biblioteca C lo aceptan de todos modos, no hay garantía de que todas lo hagan y, por lo tanto, no hay garantía de que funcione en cada compilación de pitón. Eso explica por qué los documentos de python2 no lo enumeraron y por qué en general funcionó de todos modos. Los documentos de python3 lo hacen oficial.fuente
La 'r' es para leer, la 'w' para escribir y la 'a' es para agregar.
La 't' representa el modo de texto en oposición al modo binario.
Editar: ¿Estás seguro de que viste rt y no rb?
Estas funciones generalmente envuelven la función fopen que se describe aquí:
http://www.cplusplus.com/reference/cstdio/fopen/
Como puede ver, menciona el uso de b para abrir el archivo en modo binario.
El enlace del documento que proporcionó también hace referencia a este modo b:
Agregar 'b' es útil incluso en sistemas que no tratan los archivos binarios y de texto de manera diferente, donde sirve como documentación.
fuente
rt
, por ejemplo, stackoverflow.com/questions/10971033/… , o stackoverflow.com/questions/17127853/… etc. Gracias por la información, es bueno saberlo.t
indica paratext mode
https://docs.python.org/release/3.1.5/library/functions.html#open
en Linux, no hay diferencia entre el modo de texto y el modo binario, sin embargo, en Windows, se convierte
\n
al\r\n
modo de texto cuando.http://www.cygwin.com/cygwin-ug-net/using-textbinary.html
fuente
read
devuelve cadenas Unicode. En modo binario,read
devuelve unabytes
instancia. Si desea escribir código Python 2 teniendo en cuenta la compatibilidad con versiones posteriores, puede usar enio.open
lugar del estándaropen
para obtener el comportamiento de Python 3 (con instanciasunicode
versusstr
).