Várias vezes aqui no SO eu vi pessoas usando modos rt
e wt
para ler e escrever arquivos.
Por exemplo:
with open('input.txt', 'rt') as input_file:
with open('output.txt', 'wt') as output_file:
...
Não vejo os modos documentados , mas como open()
não gera um erro - parece que é legal de usar.
Para que serve e há alguma diferença entre usar wt
vs w
e rt
vs r
?
python
file
file-io
read-write
Alecxe
fonte
fonte
wt
vsw
ert
vsr
- apenasexplicit is better than implicit
?r
ert
...w
nem sempre é igual awt
. Um desses casos égzip.open
onde o modo binário é o padrão, e não o modo de texto. Pergunta relacionada: stackoverflow.com/questions/42013083/…O
t
indica o modo de texto, o que significa que os\n
caracteres serão traduzidos para as terminações de linha do sistema operacional do host ao gravar em um arquivo e de volta ao ler. A bandeira é basicamente apenas ruído, já que o modo de texto é o padrão.Além disso
U
, esses sinalizadores de modo vêm diretamente dafopen()
função da biblioteca C padrão , um fato documentado no sexto parágrafo da documentação do python2 paraopen()
.Até onde eu sei,
t
não é e nunca fez parte do padrão C, então embora muitas implementações da biblioteca C aceitem isso de qualquer maneira, não há garantia de que todas o farão e, portanto, não há garantia de que funcionará em todas as compilações de Pitão. Isso explica por que os documentos do python2 não o listavam e por que geralmente funcionava de qualquer maneira. A documentação do python3 torna isso oficial.fonte
O 'r' é para ler, 'w' para escrever e 'a' é para acrescentar.
O 't' representa o modo de texto em oposição ao modo binário.
Edit: Tem certeza de que viu rt e não rb?
Essas funções geralmente envolvem a função fopen , que é descrita aqui:
http://www.cplusplus.com/reference/cstdio/fopen/
Como você pode ver, ele menciona o uso de b para abrir o arquivo em modo binário.
O link do documento fornecido também faz referência a este modo b:
Anexar 'b' é útil mesmo em sistemas que não tratam arquivos binários e de texto de maneira diferente, onde serve como documentação.
fonte
rt
, por exemplo, stackoverflow.com/questions/10971033/… ou stackoverflow.com/questions/17127853/… etc. Obrigado pela informação, é bom saber.t
indica paratext mode
https://docs.python.org/release/3.1.5/library/functions.html#open
no linux, não há diferença entre o modo texto e o modo binário, porém, no windows, eles convertem
\n
para o\r\n
modo texto.http://www.cygwin.com/cygwin-ug-net/using-textbinary.html
fonte
read
retorna strings Unicode. No modo binário,read
retorna umabytes
instância. Se você deseja escrever o código Python 2 com compatibilidade de encaminhamentos em mente, você pode usario.open
em vez do padrãoopen
para obter o comportamento do Python 3 (com instânciasunicode
versusstr
).