Plusieurs fois ici sur SO, j'ai vu des gens utiliser les modes rt
et wt
pour lire et écrire des fichiers.
Par exemple:
with open('input.txt', 'rt') as input_file:
with open('output.txt', 'wt') as output_file:
...
Je ne vois pas les modes documentés , mais depuis open()
ne lance pas d'erreur - il semble que son utilisation soit à peu près légale.
À quoi sert-il et y a-t-il une différence entre l'utilisation de wt
vs w
et de rt
vs r
?
python
file
file-io
read-write
alecxe
la source
la source
wt
vsw
etrt
vsr
- justeexplicit is better than implicit
?r
etrt
...w
n'est pas toujours égal àwt
. Un tel cas est celuigzip.open
où le mode binaire est le mode par défaut, et non le mode texte. Question connexe: stackoverflow.com/questions/42013083/…Le
t
indique le mode texte, ce qui signifie que les\n
caractères seront traduits aux fins de ligne du système d'exploitation hôte lors de l'écriture dans un fichier, et inversement lors de la lecture. Le drapeau est essentiellement du bruit, puisque le mode texte est la valeur par défaut.À part
U
, ces indicateurs de mode proviennent directement de lafopen()
fonction de la bibliothèque C standard , un fait documenté dans le sixième paragraphe de la documentation python2 pouropen()
.Autant que je sache,
t
ne fait pas et n'a jamais fait partie du standard C, donc bien que de nombreuses implémentations de la bibliothèque C l'acceptent de toute façon, il n'y a aucune garantie qu'elles le feront toutes, et donc aucune garantie que cela fonctionnera sur chaque build de python. Cela explique pourquoi les documents python2 ne le listaient pas, et pourquoi cela fonctionnait généralement de toute façon. Les documents python3 le rendent officiel.la source
Le «r» est pour la lecture, «w» pour l'écriture et «a» pour l'ajout.
Le «t» représente le mode texte associé au mode binaire.
Edit: Etes-vous sûr d'avoir vu rt et non rb?
Ces fonctions enveloppent généralement la fonction fopen qui est décrite ici:
http://www.cplusplus.com/reference/cstdio/fopen/
Comme vous pouvez le voir, il mentionne l'utilisation de b pour ouvrir le fichier en mode binaire.
Le lien de document que vous avez fourni fait également référence à ce mode b:
L'ajout de «b» est utile même sur les systèmes qui ne traitent pas les fichiers binaires et texte différemment, où il sert de documentation.
la source
rt
, par exemple stackoverflow.com/questions/10971033/… , ou stackoverflow.com/questions/17127853/ ... etc. Merci pour l'info, bon à savoir.t
indique pourtext mode
https://docs.python.org/release/3.1.5/library/functions.html#open
sous Linux, il n'y a aucune différence entre le mode texte et le mode binaire, cependant, dans Windows, ils se convertissent
\n
en\r\n
mode texte.http://www.cygwin.com/cygwin-ug-net/using-textbinary.html
la source
read
renvoie les chaînes Unicode. En mode binaire,read
renvoie unebytes
instance. Si vous souhaitez écrire du code Python 2 avec la compatibilité ascendante à l'esprit, vous pouvez utiliserio.open
plutôt que le standardopen
pour obtenir le comportement Python 3 (avec des instancesunicode
versusstr
).