Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python
Code

Cómo Leer y Escribir Archivos CSV en Python

by
Difficulty:IntermediateLength:MediumLanguages:

Spanish (Español) translation by Rafael Chavarría (you can also view the original English article)

El formato CSV es el formato de importación y exportación más comúnmente usado para bases de datos y hojas de cálculo. Este tutorial te dará una introducción detalladas a los CSV y los módulos y clases disponibles para leer y escribir datos a archivos CSV. También cubrirá un ejemplo de trabajo para mostrarte cómo leer y escribir datos a un archivo CSV en Python.

¿Qué Es un Archivo CSV?

Un archivo CSV (valores separados por comas) permite que los datos sean guardados en una estructura tabular con una extensión .csv. Los archivos CSV han usados de manera extensiva en aplicaciones de comercio electrónico porque son considerados muy fáciles de procesar. Algunas de las áreas en donde han sido usados incluyen:

  • importar y exportar datos de clientes
  • importar y exportar productos
  • exportar órdenes
  • exportar reportes analíticos de comercio electrónico

Módulos de Lectura y Escritura

El módulo CSV tiene varia funciones y clases disponibles para leer y escribir CSVs, y estas incluyen:

  • función csv.reader
  • función csv.writer
  • clase csv.Dictwriter
  • clase csv.DictReader

csv.reader

El módulo csv.reader toma los siguientes parámetros:

  • csvfile: Este es usualmente un objeto el cuál soporta el protocolo iterador y usualmente devuelve una cadena cada vez que su método __next__() es llamado.
  • dialect=’excel’: Un parámetro opcional usado para definir un conjunto de parámetros específicos a un dialecto CSV en particular.
  • fmtparams: Un parámetro opcional que puede ser usado para sobrescribir parámetros de formato existentes.

Aquí está un ejemplo de cómo usar el módulo csv.reader.

módulo csv.writer

Este módulo es similar al módulo csv.reader y es usado para escribir datos a un CSV. Este toma tres parámetros:

  • csvfile: Este puede ser cualquier objeto con un método write().
  • dialect=’exel’: Un parámetro opcional usado para definir un conjunto de parámetros específicos a un CSV en particular.
  • fmtparam: Un parámetro opcional que puede ser usado para sobrescribir parámetros de formato existentes.

Clases DictReader y DictWriter

DictReader y DictWriter son clases disponibles en Python para leer y escribir a un CSV. Aunque son similares a las funciones reader y writer, estas clases usan objetos de diccionario para leer y escribir a archivos csv.

DictReader

Esta crea un objeto el cuál mapea la información leída a un diccionario cuyas llaves están dadas por el parámetro fieldnames. Este parámetro es opcional, pero cuando no se especifica en el archivo, la primera fila de datos se vuelve las llaves del diccionario.

Ejemplo:

DictWriter

Esta clase es similar a la clase DictWriter y hace lo contrario, que es escribir datos a un archivo CSV. La clase es definida como   csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)

El parámetro fieldnames define la secuencia de llaves que identifican el orden en el cuál los valores en el diccionario son escritos al archivo CSV. A diferencia de DictReader, esta llave no es opcional y debe ser definida para evitar errores cuando se escribe a un CSV.

Dialectos y Formato

Un dialecto es una clase ayudante usada para definir los parámetros para una instancia reader o writer específica. Los parámetros de dialecto y formato necesitan ser declarados cuando se realiza una función lectora o writer.

Hay varios atributos los cuáles están soportados por un dialecto:

  • delimiter: Una cadena usada para separar campos. Por defecto es ‘,‘.
  • double quoute: Controla cómo las instancias de quotechar que aparecen dentro de un campo deberían ser citadas. Puede ser Verdadero o Falso.
  • escapechar: Una cadena usada por el escritor para escapar el delimitador si quoiting está establecido a QUOTE_NONE.
  • lineterminator: Una cadena usada para terminar líneas producidas por el writer. Por defecto es '\r\n'.
  • quotechar: Una cadena usada para citar campos conteniendo caracteres especiales. Por defecto es '"'.
  • skipinitialspace: Si se establece a True, cualquier espacio en blanco después del delimitador es ignorado inmediatamente.
  • strict: Si se establece a True, levanta una excepción Error en mala entrada CSV.
  • quoting: Controla cuando deberían ser generadas las citas cuando se lee o escribe a un CSV.

Leyendo un Archivo CSV

Veamos cómo leer un archivo CSV usando los módulos de ayuda que hemos discutido arriba.

Crea tu archivo CSV y guárdalo como ejemplo.csv. Asegura que tiene la extensión .csv y llena algunos datos. Aquí tenemos nuestro archivo CSV el cual contiene los nombres de los estudiantes y sus calificaciones.

Creating a spreadsheet to generate a CSV

Abajo está el código para leer los datos en nuestro CSV usando tanto la función csv.reader como la clase csv.DictReader.

Leyendo un Archivo CSV Con csv.reader

En el código de arriba, importamos el módulo CSV y después abrimos nuestro archivo CSV como File. Entonces definimos el objeto lector y usamos el método csv.reader para extraer los datos al objeto. Entonces iteramos sobre el objeto reader y recuperamos cada fila de nuestros datos.

Mostramos los datos leídos imprimiendo sus contenidos a la consola. También hemos especificado los parámetros requeridos tales como delimiter, quotechar, y quoting.

Salida

Leyendo un Archivo CSV Con DictReader

Como mencionamos arriba, DictWriter nos permite leer un archivo CSV mapeando datos a un diccionario en vez de cadenas como en el caso del módulo csv.rader. Aunque el fieldname es un parámetro opcional, es importante siempre tener etiquetadas tus columnas para legibilidad.

Aquí está cómo leer un CSV usando la clase DictWriter.

Primero importamos el módulo csv e inicializamos una lista vacía results la cuál usaremos para almacenar los datos recuperados. Después definimos el objeto lector y usamos el método csv.DictReader para extraer los datos en el objeto. Entonces iteramos el objeto reader y recuperamos cada fila de nuestros datos.

Finalmente, adjuntamos cada fila a la lista de resultados e imprimimos los contenidos a la consola.

Salida

Como puedes ver arriba, usar la clase DictReader es mejor porque da nuestros datos en un formato de diccionario con el cual es más sencillo trabajar.

Escribiendo a un Archivo CSV

Veamos ahora cómo escribir datos a un archivo CSV usando la función csv.writer y la clase csv.Dictwriter discutida al inicio de este tutorial.

Escribiendo a un Archivo CSV Usando csv.writer

El código de abajo escribe los datos definidos al archivo example2.csv.

Primero importamos el módulo csv, y la función writer() creará un objeto apto para escritura. Para iterar los datos sobre las filas, necesitaremos usar la función writerows().

Aquí está nuestro CSV con los danos que le hemos escrito.

Our CSV with the data we have written to it

Escribiendo a un Archivo CSV Usando DictWriter

Escribamos los siguientes datos a un CSV.

El código es como se muestra abajo.

Primero definimos los fieldnames, los cuales representarán los encabezados de cada columna en el archivo CSV. El método writerrow() escribirá a una fila a la vez. Si quieres escribir todos los datos de una vez, usarás el método writerrows().

Aquí está cómo escribir a todas las filas de una vez.

Conclusión

Este tutorial ha cubierto la mayoría de lo que se requiere para poder leer y escribir exitosamente a un archivo CSV usando las diferentes funciones y clases proporcionadas por Python. Los archivos CSV han sido usados ampliamente en aplicaciones de software porque son fáciles de leer y administrar y su pequeño tamaño los hacen relativamente rápidos de procesar y transferir.

No dudes en ver lo que tenemos disponible a la venta y para estudio en el marketplace, y no dudes en hacer cualquier pregunta y proporcionar tu valiosa retroalimentación usando la sección de abajo.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.