← retour aux snippets

pickle: sérialisation (ne chargez jamais un input non fiable)

Sauvegarder/restaurer des objets Python pour un usage local et maîtrisé.

python serialization #pickle#serialization#security

objectif

Sauvegarder/restaurer des objets Python pour un usage local et maîtrisé.

code minimal

import pickle
data = {"x": 1}
blob = pickle.dumps(data, protocol=pickle.HIGHEST_PROTOCOL)
back = pickle.loads(blob)
print(back["x"] == 1)  # attendu: True

utilisation

import pickle, tempfile, pathlib
with tempfile.TemporaryDirectory() as tmp:
    p = pathlib.Path(tmp) / "obj.pkl"
    p.write_bytes(pickle.dumps([1,2,3]))
    obj = pickle.loads(p.read_bytes())
    print(sum(obj) == 6)

variante(s) utile(s)

import pickle
class C:
    def __init__(self, v): self.v = v
print(isinstance(pickle.loads(pickle.dumps(C(1))).v, int))

notes

  • pickle exécute du code lors de loads -> n’alimentez JAMAIS avec des données non fiables.
  • Préférez JSON ou formats sûrs pour des échanges externes.