Problème d'unicode
Résolu/Fermémamiemando Messages postés 33475 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 janvier 2025 - 14 déc. 2022 à 13:52
- Syntaxerror: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \uxxxxxxxx escape
- Supercopier 2 - Télécharger - Gestion de fichiers
- Codec mp4 - Télécharger - Conversion & Codecs
- Error 2002 (hy000): can't connect to local server through socket '/run/mysqld/mysqld.sock' (2) ✓ - Forum Linux / Unix
- Ma position - Guide
6 réponses
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)
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
12 déc. 2022 à 18:02
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
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)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question12 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
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 ;-)
13 déc. 2022 à 10:27
En manque d'inspiration, j'ai pris le premier nom qui me venait à l'esprit.
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
13 déc. 2022 à 16:50
;)
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?!
12 déc. 2022 à 21:18
Oui n'empêche que ça avait l'air de marcher... :)