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. 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
    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
      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

        0
        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)
          0
          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


            0
            1. Moderador

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

              0
            2. Colaborador
              @mamiemando

              Sin inspiración, tomé el primer nombre que se me ocurrió.

              0
            3. 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

              0
            4. @yg_be

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

              0
          2. Sí, eso parecía funcionar... :)


            0