Problème d'unicode

Résolu/Fermé
Pr.Witherfire Messages postés 79 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 25 février 2023 - Modifié le 12 déc. 2022 à 18:00
mamiemando Messages postés 32969 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 février 2024 - 14 déc. 2022 à 13:52

Bonjour

J'ai un problème pour la restitution d'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


A voir également:

6 réponses

Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 175
Modifié le 12 déc. 2022 à 19:02

Bonjour,

Ce n'est comme cela que l'on utilise pickle: on ne fait pas pickle.dump(), puis ouverture et écriture dans

le fichier, on dumpe directement:

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

Et pour la lecture:

	with open('saved.yg','rb') as fo:
		saved = pickle.load(fo)
1
mamiemando Messages postés 32969 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 février 2024 7 727
Modifié le 12 déc. 2022 à 19:27

Bonjour,

Par rapport à ta réponse #2, je n'ai jamais vu d'extension yg (pkl me paraît plus naturel), mais pourquoi pas. 

Ensuite, en complément à la réponse de Phil_1857 #3, voici comment tu peux faire.

Code :

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

# Prepare the pickle
filename = "toto.pkl"
a = 1234567
print(f"saving {filename}")
save_all("toto.pkl")

# Delete the global variable "a"
print("del a")
del a
try:
    print(f"a = {a}")
except Exception as e:
    print(e)

# Load the pickle
print(f"loading {filename}")
load_all(filename)
print(f"a = {a}")

Résultat

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

Bonne chance

1
mamiemando Messages postés 32969 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 février 2024 7 727
12 déc. 2022 à 18:02

Bonjour,

La question est trop vague.

  1. Qu'est-ce qu'un fichier yg ?
  2. Comment l'as tu créé ?
  3. Comment tentes-tu de l'ouvrir ?

Bonne chance

0
Pr.Witherfire Messages postés 79 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 25 février 2023
Modifié le 12 déc. 2022 à 19:03

Bonjour

1. C'est une extension de fichier binaire

2. Je l'ai fait grâce au code suivant :

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. Grâce au code suivant :

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pr.Witherfire Messages postés 79 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 25 février 2023
12 déc. 2022 à 19:39

Ok merci. Pour le fichier yg, moi non plus, j'aimais vu. J'ai fait mon code à base d'un réponse de yg_be. Je me demande donc si ce n'est pas un format qu'il a créé... Merci


0
mamiemando Messages postés 32969 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 février 2024 7 727
Modifié le 12 déc. 2022 à 20:32

Haha c'est peut être une manière de signer son œuvre, il faudra lui demander ;-) Mais bon ".pkl" me paraît plus parlant ;-)

0
yg_be Messages postés 22501 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 février 2024 1 449 > mamiemando Messages postés 32969 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 février 2024
13 déc. 2022 à 10:27

En manque d'inspiration, j'ai pris le premier nom qui me venait à l'esprit.

0
mamiemando Messages postés 32969 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 février 2024 7 727 > yg_be Messages postés 22501 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 février 2024
13 déc. 2022 à 14:25

Le plus drôle, c'est que quand j'ai vu l'extension, je me suis dit : "yg, yg... mmmh à part yg_be ça ne me dit rien du tout..." :D

0
Pr.Witherfire Messages postés 79 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 25 février 2023 > mamiemando Messages postés 32969 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 février 2024
13 déc. 2022 à 16:50

;)

0
Pr.Witherfire Messages postés 79 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 25 février 2023 > yg_be Messages postés 22501 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 février 2024
13 déc. 2022 à 16:51

Cool. Je suis pas calé la dessus, mais ça voudrait dire que tu peux créer n'importe quand ton propre format?!

0
Pr.Witherfire Messages postés 79 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 25 février 2023
12 déc. 2022 à 21:18

Oui n'empêche que ça avait l'air de marcher... :)


0