web-dev-qa-db-fra.com

Ouvrir les fichiers en modes 'rt' et 'wt'

Plusieurs fois ici sur SO), j'ai déjà vu des personnes 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 puisque open() ne génère pas d'erreur, il semble que son utilisation soit à peu près légale.

A quoi servent-ils et y a-t-il une différence entre utiliser wt contre w et rt contre r?

89
alecxe

t fait référence au mode texte. Il n'y a pas de différence entre r et rt ou w et wt car le mode texte est le mode par défaut.

Documenté ici :

Character   Meaning
'r'     open for reading (default)
'w'     open for writing, truncating the file first
'x'     open for exclusive creation, failing if the file already exists
'a'     open for writing, appending to the end of the file if it exists
'b'     binary mode
't'     text mode (default)
'+'     open a disk file for updating (reading and writing)
'U'     universal newlines mode (deprecated)

Le mode par défaut est 'r' (ouvert pour la lecture de texte, synonyme de 'rt').

155
devnull

t indique le mode texte, ce qui signifie que les caractères \n Seront traduits dans les 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 fondamentalement juste du bruit, puisque le mode texte est le mode par défaut.

Autres que U, ces indicateurs de mode proviennent directement de la fonction fopen() de la bibliothèque standard C, ce qui est documenté dans le sixième paragraphe du documentation python2 pour open().

Autant que je sache, t ne fait pas et n'a jamais fait partie du standard C. Par conséquent, bien que de nombreuses implémentations de la bibliothèque C l'acceptent de toute façon, rien ne garantit qu'elles le feront toutes et, partant, aucune garantie. travaillera sur chaque construction de python. Cela explique pourquoi la documentation python2 ne l’a pas répertoriée et pourquoi cela fonctionnait généralement de toute façon. Les python3 docs le rendent officiel.

9
ʇsәɹoɈ

Le "r" est destiné à la lecture, "w" à l'écriture et "a" à l'ajout.

Le "t" représente le mode texte par rapport au mode binaire.

Plusieurs fois ici sur SO), j'ai déjà vu des personnes utiliser les modes rt et wt pour lire et écrire des fichiers.

Edit: Êtes-vous sûr d'avoir vu rt et pas rb?

Ces fonctions encapsulent généralement la fonction fopen décrite ici:

http://www.cplusplus.com/reference/cstdio/fopen/

Comme vous pouvez le voir, il est mentionné l'utilisation de b pour ouvrir le fichier en mode binaire.

Le lien vers le 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 les fichiers texte différemment, où il sert de documentation.

4
jussij

t indique pour text mode

https://docs.python.org/release/3.1.5/library/functions.html#open

sur linux, il n'y a pas de différence entre le mode texte et le mode binaire, cependant, dans Windows, ils convertissent \n à \r\n en mode texte.

http://www.cygwin.com/cygwin-ug-net/using-textbinary.html

3
ymonad