2017-10-12 4 views
1

Donc, j'ai travaillé sur ce petit programme pour un devoir de collège et j'ai besoin de décaper les données, cependant, quand je tente de charger les données précédentes et le modifier, le programme ne modifie pas les données qui étaient déjà là, à la place, il l'ignore, voici le code.Le programme Python ne reconnaît pas les données décapées, écrase le fichier existant

import pickle 

diccActivos = {} 

def guarda(nomArchGuardar,lista): 
    try: 
     f=open(nomArchGuardar,"wb") 
     print("Guardando el archivo"+" "+nomArchGuardar+"...") 
     pickle.dump(lista,f) 
     print("El archivo",nomArchGuardar,"ha sido guardado con éxito") 
     f.close() 
    except: 
     print("Error al grabar el archivo: ", nomArchGuardar) 


def abre (nomArchLeer): 
    dicc={} 
    try: 
     f=open(nomArchLeer,"rb") 
     print("Cargando el archivo"+" "+nomArchLeer+"...") 
     dicc = pickle.load(f) 
     print("El archivo",nomArchLeer,"ha sido cargado con éxito") 
     f.close() 
    except: 
     print("Error al leer el archivo: ", nomArchLeer) 
    return dicc 

#Definición de Funciones 
def agregarActivo(diccActivos): 
    ubicacion=input("Ubicación: ") 
    descripcion=input("Descripción: ") 
    estado=input("Estado: ") 
    datosActivo=[descripcion,estado] 
    diccActivos[ubicacion]=datosActivo 
    guarda("activos",diccActivos) 
    return diccActivos 

def mostrarActivo(diccActivos,ubicacion): 
    infoActivo=diccActivos[ubicacion] 
    print("Ubicación: ",ubicacion) 
    print("Descripción: ",infoActivo[0]) 
    print ("Estado: ",infoActivo[1]) 

def eliminarActivo(diccActivos,ubicacion): 
    del(diccActivos[ubicacion]) 
    #Guarda el diccionario en un archivo 
    guarda("activos",diccActivos) 

def mostrarTodosActivos(diccActivos): 
    claves = list(diccActivos.keys()) 
    for clave in claves: 
     mostrarActivo(diccActivos,clave) 
    print ("********************") 

def menu(): 
    diccCarros=abre ("activos") 
    while True: 
     print("\n--------------------------------\n") 
     print("1-Agregar Activo") 
     print("2-Mostrar Activo") 
     print("3-Eliminar Activo") 
     print("4-Mostrar Todos Los Activos") 
     print("5-Terminar") 
     print("\n--------------------------------\n") 
     opcion = int(input("Escoja una opción: ")) 
     if opcion == 1: 
      agregarActivo(diccActivos) 
     elif opcion == 2: 
      ubicacion=input("Indique el código de ubicación del activo a mostrar: ") 
      mostrarActivo(diccActivos,ubicacion) 
     elif opcion == 3: 
      ubicacion = input("Indique el código de ubicación del activo a eliminar: ") 
      eliminarActivo(diccActivos,ubicacion) 
     elif opcion == 4: 
      mostrarTodosActivos(diccActivos) 
     elif opcion == 5: 
      #Guarda el diccionario en un archivo 
      guarda("activos",diccActivos) 
      break 
     else: 
      print("Opción no existente, inténtelo de nuevo") 
      menu() 

#Programa Principal 
menu() 

La fonction « mostrarActivo », par exemple, reçoit un indice comme variable et doit imprimer tout ce qui est sur cet indice, cependant, si vous exécutez le programme, il ne le ferai pas quoi que ce soit d'impression, car il agit comme si rien n'était là.

Je sais que le problème est probablement quelque part dans la fonction "abre", car il charge le fichier décapé dans le programme, cependant, je ne peux pas tout à fait comprendre ce que je fais mal, c'est la première fois que j'ai travaillé avec le décapage, donc je n'ai pas beaucoup d'idée de ce que je fais non plus. S'il vous plaît aider.

Répondre

0

En main vous ne déclarez pas diccCarros en tant que premier global de sorte que l'affectation déclare une nouvelle variable au lieu d'écrire dans votre variable globale existante.