Problème d'unicode
RésoluBonjour
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
- Unicode error) 'unicodeescape' codec can't decode bytes in position 2-3
- Supercopier 2 - Télécharger - Gestion de fichiers
- Codec mp4 - Télécharger - Conversion & Codecs
- Ai suite 3 - Télécharger - Optimisation
- Ma position - Guide
- Codec manquant - Guide
6 réponses
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)
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
Bonjour,
La question est trop vague.
- Qu'est-ce qu'un fichier yg ?
- Comment l'as tu créé ?
- Comment tentes-tu de l'ouvrir ?
Bonne chance
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)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionOk 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