Maison >développement back-end >Tutoriel Python >Pourquoi mon Python CSV Writer ajoute-t-il des retours chariot supplémentaires sous Windows ?

Pourquoi mon Python CSV Writer ajoute-t-il des retours chariot supplémentaires sous Windows ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-07 02:14:11369parcourir

Why Does My Python CSV Writer Add Extra Carriage Returns on Windows?

CSV en Python ajoute un retour chariot supplémentaire sous Windows

L'extrait de code fourni génère un fichier CSV avec un retour chariot supplémentaire inattendu (r) sur chaque rangée. Au lieu du résultat souhaité :

hi,dude
hi2,dude2

Le fichier se lit comme suit :

hi,dude\r
\r
hi2,dude2\r
\r

Ce comportement est dû à la gestion des terminaisons de ligne spécifiques à la plate-forme.

La documentation officielle CSV suggère d'utiliser newline='' lors de l'ouverture pour désactiver la traduction universelle des nouvelles lignes :

with open('output.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    # ...

Par défaut, l'éditeur CSV termine chaque ligne par 'rn', conformément à la RFC 4180.

Python 2

Sous Windows, les fichiers doivent être ouverts en mode binaire ("rb" ou "wb") avant de passer les vers csv.reader ou csv.writer. Bien que CSV soit un format texte, il est considéré comme binaire par les bibliothèques impliquées, avec un « rn » séparant les enregistrements. Lorsqu'il est écrit en mode texte, le runtime Python remplace « n » par « rn », ce qui entraîne les retours chariot supplémentaires observés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn