Guardar texto, JSON y CSV en un archivo en Python

G

Guardar datos en un archivo es una de las tareas de programación más comunes que puede encontrar en su vida de desarrollador.

Generalmente, los programas toman alguna entrada y producen alguna salida. Existen numerosos casos en los que nos gustaría mantener estos resultados. Es posible que nos encontremos guardando datos en un archivo para su procesamiento posterior, desde páginas web que navegamos, volcados simples de datos tabulares que usamos para informes, Machine Learning y capacitación o registro durante el tiempo de ejecución de la aplicación, confiamos en que las aplicaciones escriban en archivos en lugar de hacerlo. a mano.

Python nos permite guardar archivos de varios tipos sin tener que usar bibliotecas de terceros. En este artículo, analizaremos cómo guardar los formatos de archivo más comunes en Python.

Abrir y cerrar un archivo

Abrir un archivo

Se puede acceder al contenido de un archivo cuando se abre, y ya no está disponible para leer y escribir después de haber sido cerrado.

Abrir un archivo es simple en Python:

my_data_file = open('data.txt', 'w')

Al abrir un archivo, necesitará el nombre del archivo, una cadena que podría ser una ruta relativa o absoluta. El segundo argumento es el modo, esto determina las acciones que puede realizar con el archivo abierto.

Éstos son algunos de los más utilizados:

  • r – (modo predeterminado) abre el archivo para leer
  • w – abre el archivo para escribir, sobrescribiendo el contenido si el archivo ya existe con datos
  • x – crea un nuevo archivo, fallando si existe
  • a – abre el archivo para escribir, agregando nuevos datos al final del contenido del archivo si ya existe
  • b – escribe datos binarios en archivos en lugar de los datos de texto predeterminados
  • + – permitir leer y escribir en un modo

Digamos que desea escribir en un archivo y luego leerlo, su modo debería ser ‘w +’. Si desea escribir y luego leer desde un archivo, sin borrar el contenido anterior, entonces usará ‘a +’.

Cerrar un archivo

Cerrar un archivo es aún más fácil en Python:

my_data_file.close()

Simplemente necesita llamar al método close en el objeto de archivo. Es importante cerrar el archivo una vez que haya terminado de usarlo, y hay muchas buenas razones para hacerlo:

  • Los archivos abiertos ocupan espacio en la RAM
  • Reduce la posibilidad de corrupción de datos, ya que ya no es accesible
  • Hay un límite de archivos que su sistema operativo puede tener abiertos

Para los scripts pequeños, estas no son preocupaciones urgentes, y algunas implementaciones de Python cerrarán automáticamente los archivos por usted, pero para los programas grandes no deje el cierre de sus archivos al azar y asegúrese de liberar los recursos usados.

Uso de la palabra clave “con”

Cerrar un archivo se puede olvidar fácilmente, después de todo somos humanos. Por suerte para nosotros, Python tiene un mecanismo para usar un archivo y cerrarlo automáticamente cuando terminamos.

Para hacer esto, simplemente necesitamos usar el with palabra clave:

with open('data.txt', 'w') as my_data_file:
    # TODO: write data to the file
# After leaving the above block of code, the file is closed

El archivo se abrirá para todo el código que esté sangrado después de usar el with palabra clave, marcada como la # TODO comentario. Una vez que se complete ese bloque de código, el archivo se cerrará automáticamente.

Esta es la forma recomendada de abrir y escribir en un archivo, ya que no tiene que cerrarlo manualmente para liberar recursos y ofrece un mecanismo a prueba de fallas para mantener su mente en los aspectos más importantes de la programación.

Guardar un archivo de texto

Ahora que conocemos la mejor forma de acceder a un archivo, vayamos directamente a escribir datos.

Afortunadamente, Python también hace que esto sea sencillo:

with open('do_re_mi.txt', 'w') as f:
    f.write('Doe, a deer, a female deern')
    f.write('Ray, a drop of golden sunn')

los write() La función toma una cadena y coloca ese contenido en el flujo de archivos. Aunque no lo almacenamos, el write() La función devuelve el número de caracteres que acaba de ingresar, es decir, la longitud de la cadena de entrada.

Nota: Observe la inclusión del carácter de nueva línea, n. Se usa para escribir en la siguiente línea del archivo; de lo contrario, todo el texto se agregaría como una sola línea.

Guardar varias líneas a la vez

Con el write() función podemos tomar una cadena y ponerla en un archivo. ¿Y si quisiéramos escribir varias líneas a la vez?

Podemos usar el writelines() función para poner datos en una secuencia (como una lista o tupla) y en un archivo:

with open('browsers.txt', 'w') as f:
    web_browsers = ['Firefoxn', 'Chromen', 'Edgen']
    f.writelines(web_browsers)

Como antes, si queremos que los datos aparezcan en nuevas líneas, incluimos el carácter de nueva línea al final de cada cadena.

Si desea omitir el paso de ingresar manualmente el carácter de nueva línea después de cada elemento de la lista, es fácil automatizarlo:

with open('browsers.txt', 'w') as f:
    web_browsers = ['Firefoxn', 'Chromen', 'Edgen']
    f.writelines("%sn" % line for line in web_browsers)

Nota: La entrada para writelines() debe ser una secuencia plana de cadenas o bytes; no se permiten números, objetos o secuencias anidadas como una lista dentro de una lista.

Si está interesado en leer más sobre listas y tuplas, ya tenemos un artículo dedicado a ellas: Listas vs Tuplas en Python.

Guardar un archivo CSV

Los archivos CSV (valores separados por comas) se utilizan comúnmente para almacenar datos tabulares. Debido a su popularidad, Python tiene algunos métodos integrados para facilitar la escritura de archivos de ese tipo:

import csv

weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
sales = ['10', '8', '19', '12', '25']

with open('sales.csv', 'w') as csv_file:
    csv_writer = csv.writer(csv_file, delimiter=",")
    csv_writer.writerow(weekdays)
    csv_writer.writerow(sales)

Primero necesitamos importar el csv biblioteca para obtener sus funciones auxiliares. Abrimos el archivo como estamos acostumbrados, pero en lugar de escribir contenido en el csv_file objeto, creamos un nuevo objeto llamado csv_writer.

Este objeto nos proporciona la writerow() método que nos permite poner todos los datos de la fila en el archivo de una sola vez.

Si desea obtener más información sobre el uso de archivos CSV en Python con más detalle, puede leer más aquí: Leer y escribir archivos CSV en Python.

Guardar un archivo JSON

JSON es otro formato popular para almacenar datos y, al igual que con los CSV, Python ha simplificado mucho la escritura de los datos del diccionario en archivos JSON:

import json

my_details = {
    'name': 'John Doe',
    'age': 29
}

with open('personal.json', 'w') as json_file:
    json.dump(my_details, json_file)

Necesitamos importar el json biblioteca y abra el archivo. Para escribir los datos en el archivo, simplemente llamamos al dump() función, dándole nuestro diccionario de datos y el objeto de archivo.

Si desea obtener más información sobre el uso de archivos JSON en Python, puede obtener más información en este artículo: Leer y escribir JSON en un archivo en Python.

Conclusión

Guardar archivos puede resultar útil en muchos tipos de programas que escribimos. Para escribir un archivo en Python, primero necesitamos abrir el archivo y asegurarnos de cerrarlo más tarde.

Es mejor usar el with palabra clave para que los archivos se cierren automáticamente cuando terminamos de escribir en ellos.

Podemos usar el write() método para poner el contenido de una cadena en un archivo o usar writelines() si tenemos una secuencia de texto para poner en el archivo.

Para datos CSV y JSON, podemos usar funciones especiales que Python proporciona para escribir datos en un archivo una vez que el archivo está abierto.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad