Python: el archivo csv está vacío después de usar csv writer

Python novato aquí. Estaba intentando solucionar un problema al escribir un archivo csv en un progtwig más grande y decidí volver a lo básico para tratar de encontrar el problema.

Ejecuté un ejemplo de código exacto de la documentación de lectura y escritura de Python csv:

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

Cuando voy a mi directorio de trabajo y hago clic en “eggs.csv”, el archivo está vacío, se informa como “0 kb”. Esto mismo estaba sucediendo en mi progtwig más grande (archivos csv vacíos). ¿Me estoy perdiendo algo completamente obvio?

¡Gracias!

EDITAR :
Acabo de intentar modificar el código para:

 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() 

Y esto funcionó. No estoy seguro de por qué el primero no funciona para mí.

No estoy muy familiarizado con el módulo csv , pero esto parece un problema de IO de archivo más que un problema de csv .

La razón por la que no ve nada en el archivo es que Python todavía tiene el archivo abierto. Necesitas cerrarlo.

Así que en lugar de hacer esto:

 spamWriter = csv.writer(open('eggs.csv', 'w'), delimiter=' ', quotechar='|') 

Haga esto en su lugar:

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

Ahora deberías ver lo que quieres en eggs.csv

Espero que esto ayude

Ese código funciona. ¿Está seguro de que su sistema operativo no solo está redondeando el tamaño del CSV? Después de todo, ¡solo serán unos pocos bytes!

Puede intentar print(open("eggs.csv").read()) para ver si el archivo está realmente vacío o si no hay more eggs.csv desde la línea de comandos.

El código que has publicado funciona perfectamente para mí.

¿Está seguro de que el directorio en el que ejecuta ese script es en realidad el directorio que está verificando? (¿Borras “eggs.gsv” cada vez que lo intentas?)

Probé esto en el intérprete de python. En el primer bit de código, veo el contenido en el csv solo después de salir de python (cuando el archivo está cerrado). Definitivamente, esto era algo para cerrar el archivo.