8
votes

Python - Le fichier CSV est vide après avoir utilisé l'écrivain CSV

Python Newbie ici. J'essayais de résoudre un problème avec la rédaction d'un fichier CSV dans un programme plus vaste et j'ai décidé de revenir aux bases pour essayer de trouver le problème.

J'ai exécuté exactement de code de la lecture et de la rédaction de la CSV Python: P>

import csv
csvOut=open("eggs.csv", "wb")
spamWriter = csv.writer(csvOut, delimiter=' ', quotechar='|')
spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
csvOut.close()


1 commentaires

Vous avez ouvert le fichier .. c'est bon .. Le module CSV le ferme-t-il pour vous ?? Si non .. Fermez le fichier afin qu'il soit mis à jour, ..


5 Réponses :


0
votes

Ce code fonctionne. Êtes-vous sûr que votre système d'exploitation n'est pas simplement arrondi la taille du CSV - après tout, il ne s'agira que de quelques octets!

Vous pouvez essayer imprimer (ouvert ("œufs.csv"). Lisez ()) Pour voir si le fichier est effectivement vide, ou bien plus d'œufs.csv de la ligne de commande.


2 commentaires

C'est définitivement une possibilité. Mais c'est plus que lorsque j'ouvre "les œufs.csv" dans le bloc-notes, il n'y a rien de là.


@Amanda: Dans ce cas, il est définitivement vide. Êtes-vous sûr que vous vérifiez le correct œufs.csv ? Peut-être que vous ne travaillez pas dans le répertoire, vous avez pensé que vous étiez ... Essayez Os.gecwd () .



0
votes

Le code que vous avez posté fonctionne parfaitement pour moi.

Êtes-vous sûr que le répertoire dans lequel vous exécutez ce script est en réalité le répertoire que vous vérifiez? (Supprimez-vous des "œufs.gsv" à chaque fois avant de l'essayer?)


1 commentaires

En fait, lorsque j'ai juste essayé de supprimer à nouveau, le fichier ne pouvait pas être supprimé car il était utilisé par un autre programme. Cela m'a donné l'idée d'essayer de modifier ci-dessus



14
votes

Je ne suis pas trop familier avec le module csv code>, mais cela ressemble à un problème de fichier IO plus qu'un problème csv code> problème.

La raison pour laquelle vous ne voyez rien dans le fichier est que Python a toujours le fichier ouvert. Vous devez le fermer. P>

donc plutôt que de le faire: p> xxx pré>

fais cela à la place: p>

f = open('eggs.csv', 'w')
spamWriter = csv.writer(f, delimiter=' ', quotechar='|')
# the rest of your code
f.close()


2 commentaires

Oui, on dirait que nous sommes venus avec la solution simultanément! Cependant, je trouve toujours étrange que pour certains, il fonctionne avec le "F.Close ()".


Je pense que ceux pour lesquels cela fonctionne sans le "F.Close ()" utilise "avec" et "comme". Si vous avez un exemple de ces personnes, je pouvais alors jeter un coup d'œil et l'analyser pour vous.



0
votes

J'ai essayé cela dans l'interprète Python. Dans le premier bit de code, je vois du contenu dans le CSV uniquement après que je sortais Python (lorsque le fichier est fermé). Certainement, c'était quelque chose à la fermeture du fichier.


0 commentaires

3
votes

Ceci est un peu en retard à la fête, mais une solution que j'ai encore à voir en dehors d'un seul commentaire utilise avec et comme . Dans ce cas, il peut ressembler à: xxx

J'ai utilisé cela dans le passé sans problèmes.


0 commentaires