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

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

Linda Hamilton
Libérer: 2024-11-27 21:54:11
original
495 Les gens l'ont consulté

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

Dépannage : un fichier CSV dans Python ajoute un retour chariot supplémentaire sous Windows

Lors de l'écriture d'un fichier CSV en Python sur un système Windows, un problème inattendu survient lorsqu'un r supplémentaire Le caractère apparaît à la fin de chaque ligne du fichier. Cet écart par rapport à la terminaison de ligne rn attendue pose problème, laissant les développeurs s'interroger sur la cause sous-jacente et s'il s'agit d'un comportement intentionnel.

Pour approfondir la source de ce problème, analysons l'extrait de code fourni :

import csv

with open('test.csv', 'w') as outfile:
    writer = csv.writer(outfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
    writer.writerow(['hi', 'dude'])
    writer.writerow(['hi2', 'dude2'])
Copier après la connexion

Ce code est conçu pour générer un fichier CSV nommé test.csv contenant deux lignes de données : ['salut', 'mec'] et ['salut2', 'mec2']. Cependant, après inspection du fichier généré, nous constatons que chaque ligne est suffixée d'un caractère r supplémentaire.

Pour comprendre ce comportement, nous nous tournons vers la documentation Python du module csv. Selon la documentation, il est recommandé d'ouvrir le fichier avec newline='' sur toutes les plateformes pour désactiver la traduction universelle des nouvelles lignes.

Pour Python 3 :

Par défaut , sous Windows, le module csv utilise la traduction universelle de nouvelles lignes, qui traduit le terminateur de ligne rn en n lors de l'écriture dans le fichier. Pour empêcher cette traduction et conserver le terminateur de ligne rn d'origine, il est nécessaire d'ouvrir le fichier avec newline='', comme indiqué ci-dessous :

with open('output.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    ...
Copier après la connexion

Pour Python 2 :

Sous Windows pour Python 2, il est crucial d'ouvrir les fichiers en mode binaire, en utilisant 'rb' ou 'wb', avant de les transmettre soit à csv.reader ou csv.writer. Bien que le fichier soit un fichier texte, CSV est considéré comme un format binaire par les bibliothèques impliquées, avec rn séparant les enregistrements. L'écriture de ce séparateur en mode texte invite le runtime Python à remplacer n par rn, ce qui entraîne les séquences rrn observées dans le fichier. Référez-vous à cette réponse précédente pour plus de détails sur cet aspect.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal