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.