所以,我一直在研究这个小程序用于大学作业,我需要挑选数据,但是,当我尝试加载以前的数据并修改它时,程序不会修改数据。已经存在,相反,它忽略了它,这是代码。
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()
例如,函数“mostrarActivo”接收索引作为变量,并且应该打印该索引上的所有内容,但是,如果您运行该程序,它将不会打印任何内容,因为它的行为就像没有任何东西一样。
我知道这个问题可能在“abre”函数的某个地方,因为它将pickle文件加载到程序中,但是,我无法弄清楚我做错了什么,这是第一次我一直在做酸洗,所以我不知道我在做什么。 请帮忙。
答案 0 :(得分:0)
在main
中,您不首先将diccCarros
声明为全局,因此赋值声明了一个新变量,而不是写入现有的全局变量。