Python csv écrivain toujours le DOS en fin de chaîne de caractères?
Je me rends compte que la csv bibliothèque Python génère toujours de DOS en fin de chaîne de caractères. Même si j'utilise le 'wb'
mode, même si j'utilise Linux.
import csv
f = open('output.txt', 'wb');
writer = csv.writer(f)
writer.writerow([2,3,4]);
f.close()
Le code ci-dessus utilise toujours '\r\n'
comme la fin de la ligne de séparation. Comment puis-je l'utiliser '\n'
seulement?
- Le CSV MIME spec mandats CRLF que le séparateur de ligne: tools.ietf.org/html/rfc4180
- Je crois que le csv reader le fait toujours, et ne peut pas être changé, mais vous êtes seulement de demander à propos de l'écrivain, dont la valeur par défaut peut être changé.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez donner votre
écrivain
instance personnaliséelineterminator
argument dans le constructeur:Comme Niklas répondu, le lineterminator argument vous permet de choisir vos fins de ligne. Plutôt que de codage en dur elle à
\n
, de le rendre indépendant de la plateforme à l'aide de votre plate-forme de l' séparateur de ligne:os.linesep
.Pour les autres qui trouvent ce post, ne manquez pas la
'wb'
. Vous ne remarquerez pas un problème si vous êtes absent sur certaines plates-formes comme GNU/Linux, mais il est important d'ouvrir le fichier dans le mode binaire sur les plates-formes où le fait que les questions, comme les Fenêtres. Sinon, le fichier csv peut se retrouver avec des fins de ligne comme\r\r\n
. Si vous utilisez le'wb'
etos.linesep
, vos fin de ligne doit être correcte sur toutes les plateformes.wb
sur linux, j'obtiens une erreur pourwriter.writeheader()
writer
etDictWriter
avecwb
, @CiprianTomoiaga, et il fonctionne très bien pour moi. Je vous suggère de poster une nouvelle question avec un exemple de code et le message d'erreur, puis ajoutez un commentaire ici avec le lien de votre question.'wb'
(vous obtenez uneTypError
). Ainsi, vous devez ouvrir le fichier comme ceci:f = open('output.csv', 'w', newline='')
lorsque vous utilisez Python 3. Voir aussi le Python 3 CSV documentation.