¿Cómo podría guardar datos después de cerrar mi progtwig?

Actualmente estoy trabajando en un directorio de la guía telefónica utilizando diccionarios. No conocía ninguna forma de guardar la información después de cerrar el progtwig. Necesito guardar la información de la variable para poder agregar más tarde e imprimirla.

Information={"Police":911} def NewEntry(): Name=raw_input("What is the targets name?") Number=raw_input("What is the target's number?") Number=int(Number) Information[Name]=Number NewEntry() print Information 

Edición: ahora estoy usando el módulo Pickle y este es mi código actual, pero no funciona:

  import pickle Information={"Police":911} pickle.dump(Information,open("save.p","wb")) def NewEntry(): Name=raw_input("What is the targets name?") Number=raw_input("What is the target's number?") Number=int(Number) Information[Name]=Number Information=pickle.load(open("save.p","rb")) NewEntry() pickle.dump(Information,open("save.p","wb")) print Information 

Puede escribir en un archivo de texto como una cadena y luego leer el análisis como un diccionario:

Write

 with open('info.txt', 'w') as f: f.write(str(your_dict)) 

Read

 import ast with open('info.txt', 'r') as f: your_dict = ast.literal_eval(f.read()) 

Puedes usar el módulo Pickle :

  import pickle # Save a dictionary into a pickle file. favorite_color = { "lion": "yellow", "kitty": "red" } pickle.dump( favorite_color, open( "save.p", "wb" ) ) 

O

  # Load the dictionary back from the pickle file. favorite_color = pickle.load( open( "save.p", "rb" ) ) 

Pickle funciona, pero existen algunos riesgos potenciales de seguridad con la lectura en objetos decapados.

Otra técnica útil es crear un archivo phonebook.ini y procesarlo con el configparser de python. Esto le da la posibilidad de editar el archivo ini en un editor de texto y agregar entradas fácilmente.

** Estoy usando las nuevas cadenas de caracteres de Python 3 en esta solución y cambié el nombre de “Información” a “agenda” para cumplir con las convenciones estándar de nombres de variables

Usted querría agregar un poco de manejo de errores para una solución robusta, pero esto ilustra el punto para usted:

 import configparser INI_FN = 'phonebook.ini' def ini_file_create(phonebook): ''' Create and populate the program's .ini file''' with open(INI_FN, 'w') as f: # write useful readable info at the top of the ini file f.write(f'# This INI file saves phonebook entries\n') f.write(f'# New numbers can be added under [PHONEBOOK]\n#\n') f.write(f'# ONLY EDIT WITH "Notepad" SINCE THIS IS A RAW TEXT FILE!\n\n\n') f.write(f"# Maps the name to a phone number\n") f.write(f'[PHONEBOOK]\n') # save all the phonebook entries for entry, number in phonebook.items(): f.write(f'{entry} = {number}\n') f.close() def ini_file_read(): ''' Read the saved phonebook from INI_FN .ini file''' # process the ini file and setup all mappings for parsing the bank CSV file config = configparser.ConfigParser() config.read(INI_FN) phonebook = dict() for entry in config['PHONEBOOK']: phonebook[entry] = config['PHONEBOOK'][entry] return phonebook # populate the phonebook with some example numbers phonebook = {"Police": 911} phonebook['Doc'] = 554 # example call to save the phonebook ini_file_create(phonebook) # example call to read the previously saved phonebook phonebook = ini_file_read() 

Aquí está el contenido del archivo phonebook.ini creado.

 # This INI file saves phonebook entries # New numbers can be added under [PHONEBOOK] # # ONLY EDIT WITH "Notepad" SINCE THIS IS A RAW TEXT FILE! # Maps the name to a phone number [PHONEBOOK] Police = 911 Doc = 554