Python newbie devient un peu frustré avec le module csv. À ce rythme, il aurait été plus simple d'écrire l'analyseur de fichier moi-même, mais je veux faire les choses de la manière Pythonienne ...CSVWriter n'enregistre pas les données dans le fichier - POURQUOI?
J'ai écrit un petit script python qui devrait enregistrer mes données dans un fichier CSV .
Voici un extrait de mon code:
import csv
wrtr = csv.writer(open('myfile.csv','wb'),delimiter=',', quotechar='"')
for row in rows:
wrtr.writerow([row.field1,row.field2,row.field3])
Le fichier myfile.csv est créé avec succès, mais il est vide - mais a un verrou sur elle, comme toujours utilisé par le processus Python. Il semble que les données ont été écrites dans le fichier en mémoire, mais elles n'ont pas encore été vidées sur le disque.
Étant donné que le processus Python maintient un verrou sur le fichier, je suppose que je suis responsable de la libération du verrou. Voici mes questions:
- Comment puis-je obtenir python pour vider le disque
- Comment puis-je fermer le fichier qui a été ouvert dans la méthode csv.writer()?
"" "cela aurait été plus simple si j'avais écrit l'analyseur de fichier moi-même" "" - je le classerai sous "fameux derniers mots". –
L'intuition principale est que le handle de fichier est toujours ouvert après que vous écrivez à l'auteur de csv. Si vous supprimez l'appel 'open' à l'extérieur et que vous maintenez un handle de fichier séparé que vous transmettez dans csv.writer (csvFile, ...), vous pouvez fermer ce handle de fichier lorsque vous avez terminé et que cela videra. La réponse fournie par Tim explique certains bons moyens de le faire. – mindthief
csvwriter manque une méthode flush, c'est un oubli. –