Lectura y escritura de archivos csv
Los archivos CSV (Comma Separated Values) son archivos de texto que almacenan datos tabulares en formato plano. Cada línea representa una fila de datos y cada valor está separado por comas (u otro delimitador como ;). Son ampliamente usados para exportar datos desde hojas de cálculo o bases de datos.
Tenemos la siguiente estructura de nuestro proyecto:
Directorysrc
- leer_csv.py
- escribir_csv.py
- rescribir_csv.py
Directorydocs
- products.csv
Leer un archivo CSV
Sección titulada «Leer un archivo CSV»Para leer archivos CSV, Python proporciona el módulo incorporado csv. Este módulo permite recorrer filas, acceder a columnas por índice o nombre y manejar distintos delimitadores.
import csv
with open ('./docs/products.csv', 'r') as file: csv_reader = csv.DictReader(file) for row in csv_reader: print(row)
Añadir datos a archivo CSV
Sección titulada «Añadir datos a archivo CSV»Este script abre un archivo CSV existente y agrega una nueva fila con los datos de un producto. Utiliza el modo ‘a’ para añadir al final sin borrar el contenido anterior.
import csv
# Datos a añadirnuevo_producto = {'name': 'Teclado', 'price': '45'}
# Añade una nueva fila al final del archivowith open('./document/products.csv', 'a', newline='') as file:fieldnames = ['name', 'price']writer = csv.DictWriter(file, fieldnames=fieldnames)
# Escribe una nueva líneawriter.writerow(nuevo_producto)
Sobrescribir un archivo CSV
Sección titulada «Sobrescribir un archivo CSV»Este script reemplaza completamente el contenido del archivo CSV con una nueva lista de productos. Utiliza el modo ‘w’ para sobrescribir el archivo desde cero, incluyendo el encabezado.
import csv
# Lista de productos para sobrescribir el archivo completoproductos = [{'name': 'Monitor', 'price': '200'},{'name': 'Auriculares','price': '80'}]
# Sobrescribe el archivo completo con nuevos datoswith open('./document/products.csv', 'w', newline='') as file: fieldnames = ['name', 'price'] writer = csv.DictWriter(file, fieldnames=fieldnames)
# Escribe encabezado y luego los datoswriter.writeheader()writer.writerows(productos)