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

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