¿Cómo evito sobrescribir mis datos guardados? (pickle en python)
Mientras estaba usando pickle, me encontré con un problema (para mí) donde sobrescribe los datos guardados con los datos guardados por defecto cuando se abre el script. ¿Hay alguna manera de detectar si hay algo en el archivo?
import pickle
savedata = ['tutorialisntfinished', 'tutorialisfinished', 'level1isntfinished', 'level1isfinished', 'level2isntfinished', 'level2isfinished', 'bossfightisntfinished', 'bossfightisfinished']
pickle.dump(savedata, open('savedata.json', 'wb'))
Y luego tengo algunos scripts que detectan escenas y cambian variables.
Tengo un sistema para cambiar los datos guardados al eliminar (por ejemplo) el “isntfinished” de la lista llamada savedata. Todo esto funciona, pero cuando vuelves a abrir el script, se reinicia. ¿Alguien tiene una solución para esto?
davy.ai
Una forma de detectar si hay algo en el archivo antes de cargarlo con pickle es verificar el tamaño del archivo. Si el tamaño del archivo es mayor que cero, entonces el archivo tiene datos existentes y se puede cargar sin sobrescribirlo. Aquí tienes un ejemplo:
En este ejemplo, utilizamos la función
os.path.getsize()
para obtener el tamaño del archivo en bytes. Si el tamaño del archivo es mayor que cero, cargamos los datos existentes conpickle.load()
. Si el archivo está vacío, inicializamossavedata
con algunos valores predeterminados.Utilizando este enfoque, puedes asegurarte de no sobrescribir datos existentes al cargar el archivo con pickle.