Leer y escribir listas en un archivo en Python

    Como estructuras de datos serializadas, los programadores de Python utilizan de forma intensiva matrices, listas y diccionarios. El almacenamiento persistente de estas estructuras de datos requiere un archivo o una base de datos para trabajar. Este artículo describe cómo escribir una lista en un archivo y cómo volver a leer esa lista en la memoria.

    Para escribir datos en un archivo y leer datos de un archivo, el lenguaje de programación Python ofrece los métodos estándar write() y read() para tratar con una sola línea, así como writelines() y readlines() para tratar con varias líneas. Además, tanto el pickle y el json El módulo también permite formas inteligentes de tratar con conjuntos de datos serializados.

    Usar los métodos de lectura y escritura

    Para tratar con caracteres (cadenas), los métodos básicos funcionan excelentemente. Guardar tal lista línea por línea en el archivo listfile.txt se puede hacer de la siguiente manera:

    # define list of places
    places = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']
    
    with open('listfile.txt', 'w') as filehandle:
        for listitem in places:
            filehandle.write('%sn' % listitem)
    

    En la línea 6 el listitem se amplía con un salto de línea ” n”, en primer lugar, y en segundo lugar se almacena en el archivo de salida. Para volver a leer la lista completa del archivo listfile.txt en la memoria, este código de Python le muestra cómo funciona:

    # define an empty list
    places = []
    
    # open file and read the content in a list
    with open('listfile.txt', 'r') as filehandle:
        for line in filehandle:
            # remove linebreak which is the last character of the string
            currentPlace = line[:-1]
    
            # add item to the list
            places.append(currentPlace)
    

    Tenga en cuenta que deberá eliminar el salto de línea del final de la String. En este caso, nos ayuda que Python también permita operaciones de lista en cadenas. En la línea 8 del código anterior, esta eliminación se realiza simplemente como una operación de lista en la cadena en sí, que conserva todo menos el último elemento. Este elemento contiene el carácter ” n” que representa el salto de línea en sistemas UNIX / Linux.

    Uso de los métodos de líneas de escritura y líneas de lectura

    Como se mencionó al principio de este artículo, Python también contiene los dos métodos writelines() y readlines() para escribir y leer varias líneas en un solo paso, respectivamente. Para escribir la lista completa en un archivo en el disco, el código Python es el siguiente:

    # define list of places
    places_list = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']
    
    with open('listfile.txt', 'w') as filehandle:
        filehandle.writelines("%sn" % place for place in places_list)
    

    Para leer la lista completa de un archivo en el disco, el código Python es el siguiente:

    # define empty list
    places = []
    
    # open file and read the content in a list
    with open('listfile.txt', 'r') as filehandle:
        filecontents = filehandle.readlines()
    
        for line in filecontents:
            # remove linebreak which is the last character of the string
            current_place = line[:-1]
    
            # add item to the list
            places.append(current_place)
    

    La lista anterior sigue un enfoque más tradicional tomado de otros lenguajes de programación. Para escribirlo de una manera más pythonica, eche un vistazo al código a continuación:

    # define empty list
    places = []
    
    # open file and read the content in a list
    with open('listfile.txt', 'r') as filehandle:
        places = [current_place.rstrip() for current_place in filehandle.readlines()]
    

    Habiendo abierto el archivo listfile.txt en la línea 5, el restablecimiento de la lista se realiza por completo en la línea 6. En primer lugar, el contenido del archivo se lee a través de readlines(). En segundo lugar, en un for bucle de cada línea, el carácter de salto de línea se elimina utilizando el rstrip()método. En tercer lugar, la cadena se agrega a la lista de lugares como un nuevo elemento de la lista. En comparación con la lista anterior, el código es mucho más compacto, pero puede ser más difícil de leer para los programadores principiantes de Python.

    Usando el módulo de pepinillos

    Los diferentes métodos explicados hasta ahora almacenan la lista de forma que los humanos aún puedan leerla. En caso de que esto no sea necesario, pepinillo El módulo puede resultarle bastante útil. Sus dump() El método almacena la lista de manera eficiente como un flujo de datos binarios. En primer lugar, en la línea 7 (en el código siguiente) el archivo de salida listfile.data se abre para escritura binaria (“wb”). En segundo lugar, en la línea 9
    la lista se almacena en el archivo abierto usando el dump() método.

    # load additional module
    import pickle
    
    # define a list of places
    placesList = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']
    
    with open('listfile.data', 'wb') as filehandle:
        # store the data as binary data stream
        pickle.dump(placesList, filehandle)
    

    Como siguiente paso, leemos la lista del archivo de la siguiente manera. En primer lugar, el archivo de salida listfile.data se abre binario para lectura (“rb”) en la línea 4. En segundo lugar, la lista de lugares se carga desde el archivo usando el load() método.

    # load additional module
    import pickle
    
    with open('listfile.data', 'rb') as filehandle:
        # read the data as binary data stream
        placesList = pickle.load(filehandle)
    

    Los dos ejemplos aquí demuestran el uso de cadenas. A pesar de que, pickle funciona con todo tipo de objetos de Python, como cadenas, números, estructuras autodefinidas y cualquier otra estructura de datos incorporada que proporciona Python.

    Usando el formato JSON

    El formato de datos binarios pickle utiliza es específico de Python. Para mejorar la interoperabilidad entre diferentes programas, la notación de objetos JavaScript (JSON) proporciona un esquema fácil de usar y legible por humanos, por lo que se hizo muy popular.

    El siguiente ejemplo demuestra cómo escribir una lista de tipos de variables mixtas en un archivo de salida usando el json módulo. En la línea 4 se define la lista básica. Habiendo abierto el archivo de salida para escribir en la línea 7, el dump() El método almacena la lista básica en el archivo usando la notación JSON.

    import json
    
    # define list with values
    basicList = [1, "Cape Town", 4.6]
    
    # open output file for writing
    with open('listfile.txt', 'w') as filehandle:
        json.dump(basicList, filehandle)
    

    Leer el contenido del archivo de salida de nuevo en la memoria es tan simple como escribir los datos. El método correspondiente a dump() es nombrado load(), y funciona de la siguiente manera:

    import json
    
    # open output file for reading
    with open('listfile.txt', 'r') as filehandle:
        basicList = json.load(filehandle)
    

    Conclusión

    Los diferentes métodos que se muestran arriba van desde la simple escritura / lectura de datos hasta el volcado / carga de datos a través de flujos binarios usando pickle y JSON. Esto simplifica almacenar una lista de forma persistente y volver a leerla en la memoria.

    Etiquetas:

    Deja una respuesta

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