Remarque: Il semble que ce n'est pas la meilleure solution, car de la façon dont la ligne supplémentaire a été ajouté sur un système windows. Comme indiqué dans le python documement:
Si csvfile est un objet fichier, il doit être ouvert avec le ‘b' sur les plates-formes où cela fait une différence.
Windows est une telle plate-forme où cela fait une différence. Lors du changement de la terminaison de ligne comme je l'ai décrit ci-dessous peuvent avoir résolu le problème, le problème pourrait être évité complètement par l'ouverture du fichier en mode binaire. On pourrait dire que cette solution est plus "elegent". "Tripoter" avec le terminateur de ligne aurait probablement entraîné portables code entre les systèmes dans ce cas, où l'ouverture d'un fichier en mode binaire sur un système unix n'entraîne aucun effet. c'est à dire. il en résulte dans le système de la croix du code compatible.
À Partir De Python Docs:
Sur Windows, " b " annexé à la mode
ouvre le fichier en mode binaire, de sorte
il y a aussi des modes de transport comme le 'rb', 'wb',
et "r+b". Python sur Windows fait une
distinction entre le texte et binaire
fichiers; la fin-de-ligne de caractères dans
les fichiers texte sont automatiquement modifiés
légèrement lorsque des données sont lues ou écrites.
Cette derrière-le-scènes de la modification de
fichier de données est bien pour le texte ASCII
fichiers, mais il va corrompre des données binaires
comme ça en JPEG ou de fichiers EXE. Être
très attention à utiliser le mode binaire lors de l'
la lecture et l'écriture de ces fichiers. Sur
Unix, il ne fait pas de mal à ajouter un "b"
à la mode, donc vous pouvez l'utiliser
la plate-forme indépendante pour tous les binaires
les fichiers.
Origine:
Dans le cadre de l'option paramètres pour le csv.écrivain si vous obtenez des lignes vierges supplémentaires que vous pourriez avoir à changer le lineterminator (info ici). L'exemple ci-dessous adaptés à partir de l'python page csv docs. Changer de '\n' à ce qu'il devrait être. Comme c'est juste un coup de poignard dans le noir, à la le problème que cela peut ou peut ne pas fonctionner, mais c'est ma meilleure supposition.
>>> import csv
>>> spamWriter = csv.writer(open('eggs.csv', 'w'), lineterminator='\n')
>>> spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])
>>> spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])