En esta entrada veremos cómo escribir un archivo CSV utilizando Python. Utilizaremos la función writer() que forma parte del módulo csv. Este módulo es parte de la librería estándar de Python así que no tendrás que instalarlo. Si te quieres dar una vuelta por la documentación oficial, acá te dejo el enlace.
Veremos algunos ejemplos de uso de la función writer() que nos permitirá agrupar nuestros datos para poderlos imprimir en el formato correcto.
El siguiente código nos permitirá guardar en un archivo que llamaremos ejemplo.csv los siguientes valores:
hora;fecha;nombre
14:07;03-04-87;Magda
07:45;17-02-98;Mario
17:43;05-09-78;Emilio
Usaremos la función open() para abrir el archivo en modo escritura y la función writer() que nos permitirá guardar los datos que mostramos anteriormente. El código que usaremos es el siguiente:
import csv
with open("ejemplo.csv", 'w', newline='') as f:
listado = csv.writer(f, delimiter=',')
listado.writerow(["hora", "dia", "nombre"])
listado.writerow(["14:07", "03-04-87", "Magda"])
listado.writerow(["07:45", "17-02-98", "Mario"])
listado.writerow(["17:43", "05-09-78", "Emilio"])
>>> import csv
>>> with open(«ejemplo.csv», ‘w’, newline=») as f:
… listado = csv.writer(f, delimiter=’,’)
… listado.writerow([«hora», «dia», «nombre»])
… listado.writerow([«14:07», «03-04-87», «Magda»])
… listado.writerow([«07:45», «17-02-98», «Mario»])
… listado.writerow([«17:43», «05-09-78», «Emilio»])
…
17
22
22
23
El numero que obtenemos de regreso es la cantidad de caracteres que se escribieron en el archivo. Abre el archivo recién creado con el nombre ejemplo.csv para verificar que se guardo la información correctamente. Recuerda que el archivo se creará en la ruta en la que te encontrabas cuando abriste el interprete en modo interactivo. Si quieres crear el archivo en una ruta es particular no olvides especificarla antes del nombre del archivo dentro de la función open().
En esta ocasión usamos como separador entre valores una coma (,). Esto es configurable con el parámetro delimiter de la función writer().
Con el código anterior escribimos línea por línea con la función writerow() pero podríamos escribir todos los valores con writerows(). Hagamos la adecuación para ver su funcionamiento.
import csv
datos = [["hora", "dia", "nombre"],
["14:07", "03-04-87", "Magda"],
["07:45", "17-02-98", "Mario"],
["17:43", "05-09-78", "Emilio"]]
with open("ejemplo.csv", 'w', newline='') as f:
listado = csv.writer(f, delimiter=',')
listado.writerows(datos)
>>> datos = [[«hora», «dia», «nombre»],
… [«14:07», «03-04-87», «Magda»],
… [«07:45», «17-02-98», «Mario»],
… [«17:43», «05-09-78», «Emilio»]]
with open(«c:\Lucila\ejemplo.csv», ‘w’, newline=») as f:
… listado = csv.writer(f, delimiter=’,’)
… listado.writerows(datos)
…
En este segundo ejemplo, todos los valores estaban ordenados en una lista. Esto nos permitió utilizar writerows() para escribir todos los valores con una sola instrucción. Sin embargo, podemos hacer uso de ambas funciones en el mismo bloque de código. Separemos los títulos de los valores para ver el uso de ambas funciones.
import csv
titulos = ["hora", "dia", "nombre"]
datos = [["14:07", "03-04-87", "Magda"],
["07:45", "17-02-98", "Mario"],
["17:43", "05-09-78", "Emilio"]]
with open("ejemplo.csv", 'w', newline='') as f:
listado = csv.writer(f, delimiter=',')
listado.writerow(titulos)
listado.writerows(datos)
>>> import csv
>>> titulos = [«hora», «dia», «nombre»]
datos = [[«14:07», «03-04-87», «Magda»],
… [«07:45», «17-02-98», «Mario»],
… [«17:43», «05-09-78», «Emilio»]]
with open(«ejemplo.csv», ‘w’, newline=») as f:
… listado = csv.writer(f, delimiter=’,’)
… listado.writerow(titulos)
… listado.writerows(datos)
…
17
Espero que esta entrada te sea muy útil para escribir un archivo CSV en Python. Si lo que estas buscando es cómo leer un archivo CSV en Python, te dejo el enlace a la entrada para que te des una vuelta. Cuéntame, ¿qué te pareció esta entrada?