Guardar texto, JSON y CSV en un archivo en Python

    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.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *