Guardar variables y configuarciones con el módulo shelve

Puedes guardar las variables de tus programas Python en archivos binarios de estantería utilizando el módulo shelve. De esta manera, tu programa puede restaurar los datos de las variables desde el disco duro. El módulo shelve te permitirá añadir las funciones Guardar y Abrir a tu programa. Por ejemplo, si ejecuta un programa e introduce algunos ajustes de configuración, puede guardar esos ajustes en un archivo de estantería y luego hacer que el programa los cargue la próxima vez que se ejecute.

Guardando variables de forma persistente en un archivo

Introduzca lo siguiente en el shell interactivo:

>>> import shelve
>>> shelfFile = shelve.open('mydata')
>>> cats = ['Zophie', 'Pooka', 'Simon']
>>> shelfFile['cats'] = cats
>>> shelfFile.close()

Para leer y escribir datos con el módulo shelve, primero hay que importar shelve. Llama a shelve.open() y pásale un nombre de archivo, y luego almacena el valor de la estantería devuelto en una variable. Puedes hacer cambios en el valor de la estantería como si fuera un diccionario. Cuando haya terminado, llame a close() sobre el valor de la estantería. Aquí, nuestro valor de estantería se almacena en shelfFile. Creamos una lista gatos (cats) y escribimos shelfFile['cats'] = cats para almacenar la lista en shelfFile como un valor asociado a la clave 'cats' (como en un diccionario). Luego llamamos a close() en shelfFile. Ten en cuenta que a partir de Python 3.7, tienes que pasarle al método open() los nombres de los archivos como cadenas. No puedes pasarle el objeto Path.

Después de ejecutar el código anterior en Windows, verás tres nuevos archivos en el directorio de trabajo actual: mydata.bak, mydata.dat, y mydata.dir. En macOS, sólo se creará un único archivo mydata.db.

Estos archivos binarios contienen los datos almacenados en su estantería. El formato de estos archivos binarios no es importante; sólo necesitas saber qué hace el módulo shelve, no cómo lo hace. El módulo le libera de preocuparse de cómo almacenar los datos de su programa en un archivo.

Leer las variables guardadas con shelve

Sus programas pueden utilizar el módulo shelve para reabrir y recuperar posteriormente los datos de estos archivos de estantería. Los valores de la estantería no tienen que ser abiertos en modo de lectura o escritura-pueden hacer ambas cosas una vez abiertos. Introduzca lo siguiente en el shell interactivo:

>>> shelfFile = shelve.open('mydata')
>>> type(shelfFile)
<class 'shelve.DbfilenameShelf'>
>>> shelfFile['cats']
['Zophie', 'Pooka', 'Simon']
>>> shelfFile.close()

Aquí abrimos los archivos de la estantería para comprobar que nuestros datos se han almacenado correctamente. Al introducir shelfFile['cats'] nos devuelve la misma lista que hemos almacenado antes, por lo que sabemos que la lista está correctamente almacenada, y llamamos a close().

Al igual que los diccionarios, los valores de la estantería tienen métodos keys() y values() que devolverán valores tipo lista de las claves y valores de la estantería. Como estos métodos devuelven valores en forma de lista en lugar de verdaderas listas, debes pasarlos a la función list() para obtenerlos en forma de lista. Introduzca lo siguiente en el shell interactivo:

>>> shelfFile = shelve.open('mydata')
>>> list(shelfFile.keys())
['cats']
>>> list(shelfFile.values())
[['Zophie', 'Pooka', 'Simon']]
>>> shelfFile.close()

El texto plano es útil para crear archivos que leerás en un editor de texto como el Bloc de notas o TextEdit, pero si quieres guardar los datos de tus programas Python, utiliza el módulo shelve.

Deja una respuesta