Problema de Unicode

Resuelto

Hola

Tengo un problema para la restitución de un .yg

 "C:\Program Files\Python311\python.exe" C:\Users\Gwenneg\PycharmProjects\pickle2\main.py    File "C:\Users\Gwenneg\PycharmProjects\pickle2\main.py", line 7     fil=open("C:\Users\Gwenneg\PycharmProjects\pythonProject1\saved.yg","rb")                                                                        ^ SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape Process finished with exit code 1


Merci


6 respuestas

  1. Moderador

    Hola,

    La pregunta es demasiado vaga.

    1. ¿Qué es un archivo yg?
    2. ¿Cómo lo creaste?
    3. ¿Cómo intentas abrirlo?

    Buena suerte

    1. Hello

      1. Es una extensión de archivo binario

      2. Lo hice gracias al siguiente código:

      import pickle def sauvonstout(): globs = list(globals()) saved = [] for v in globs: d = globals()[v] t = (str(type(d))) if t != "<class 'module'>" and t !="<class 'function'>": saved.append((v,pickle.dumps(d))) bytessaved = pickle.dumps(saved) fil = open("saved.yg","wb") fil.write(bytessaved) fil.close() a=1234567 sauvonstout()

      3. Gracias al siguiente código:

      import pickle def restore(pb): b = pickle.loads(pb) for n, p in b: v = pickle.loads(p) globals()["yg"+n] = pickle.loads(p) fil = open("saved.yg","rb") pb = fil.read() restore(pb) print(yga)
      1. Hola,

        No se utiliza pickle de esa forma: no se hace pickle.dump(), luego se abre y se escribe en

        el archivo; se vierte directamente:

         with open('saved.yg','wb') as fo: pickle.dump(saved, fo) 

        Y para la lectura:

         with open('saved.yg','rb') as fo: saved = pickle.load(fo)
        1. Moderador

          Hola,

          Con respecto a tu respuesta #2, nunca he visto una extensión yg (pkl me parece más natural), pero why not.

          Luego, como complemento a la respuesta de Phil_1857 #3, aquí tienes cómo puedes hacerlo.

          Código :

          import pickle from types import ModuleType def save_all(filename: str): with open(filename, "wb") as f: g = { k : v for (k, v) in globals().items() if ( not (k.startswith("__") and k.endswith("__")) and not callable(v) and not isinstance(v, ModuleType) ) } pickle.dump(g, f) def load_all(filename: str): with open(filename, "rb") as f: for (k, v) in pickle.load(f).items(): globals()[k] = v # Preparar el filename del pickle filename = "toto.pkl" a = 1234567 print(f"saving {filename}") save_all("toto.pkl") # Eliminar la variable global "a" print("del a") del a try: print(f"a = {a}") except Exception as e: print(e) # Cargar el pickle print(f"loading {filename}") load_all(filename) print(f"a = {a}") 

          Resultado

           saving toto.pkl del a name 'a' is not defined loading toto.pkl a = 1234567

          Bonne chance

          1. Ok, gracias. Sobre el archivo yg, a mí también me gustaba verlo. Hice mi código basado en una respuesta de yg_be. Por lo tanto, me pregunto si no es un formato que él creó... Gracias


            1. Moderador

              Jaja, tal vez sea una forma de firmar su obra; habrá que preguntarle ;-) Pero bueno, ".pkl" me parece más expresivo ;-)

            2. Moderador
              @yg_be

              Lo más gracioso es que cuando vi la extensión, pensé: "yg, yg... mmmh aparte de yg_be no me dice nada en absoluto..." :D

            3. @yg_be

              Genial. No estoy muy puesto en eso, pero eso quiere decir que puedes crear tu propio formato en cualquier momento?!