Hva er PICKLE-filformatet?
Filer med filendelsen .pickle lagrer Python-objekter serialisert ved hjelp av pickle-modulen, Pythons innebygde bibliotek for objektserialisering. Både .pickle og .pkl er utskiftbare utvidelser for samme format; .pickle er den lengre eksplisitte formen, mens .pkl er den kompakte varianten på tre tegn som har vært i bruk siden Python 1.x.
Innholdet i Python Pickle-filer
Serialiserte objekter i .pickle-filer kan være av hvilken som helst Python-type. .pickle-filer brukes til å serialisere databaseobjekter, mellomlagre vekter for maskinlæringsmodeller, eller lagre programtilstand mellom kjøringer. Kun .pickle-filer fra pålitelige kilder bør brukes, da slike filer kan inneholde skadelig programvare - deserialisering av en upålitelig pickle kan kjøre vilkårlig Python-kode. Pickle-objekter kan komprimeres eksternt ved hjelp av gzip, bz2 eller lzma.
Hvordan opprettes Python PICKLE-filer?
Serialiseringsprosessen kalles «pickling» og gjøres ved hjelp av metodene dump() og dumps(). Metoden dump() brukes for å serialisere et objekt til en fil, mens dumps() lagrer objektet som et bytes-objekt. Deserialisering - å konvertere bytestrømmen tilbake til det opprinnelige objektet - gjøres ved hjelp av load() og loads(); denne prosessen kalles «unpickling».
Pickle-protokollversjonen styrer det binære formatet. Protokoll 0 er menneskelig lesbar ASCII; protokollene 1-5 er progressivt binære, der protokoll 5 (Python 3.8+) legger til ut-av-bånd-buffere for effektiv håndtering av store .NPY-matriser. I arbeidsflyter for maskinlæring er .pickle mye brukt for å lagre scikit-learn-modeller og PyTorch-sjekkpunkter, selv om SafeTensors vinner terreng som et sikrere alternativ spesifikt for modellvekter.
Sikkerhet og trygghet
RISIKO: HIGHKRITISK ADVARSEL: Pickle-filer kan kjøre vilkårlig Python-kode når de lastes inn. En skadelig .pickle-fil kan slette filer, laste ned skadevare eller ta over et system. Last aldri inn en pickle-fil fra en upålitelig kilde. I arbeidsflyter for ML/AI er skadelige pickles i modell-lagre (Hugging Face Hub, GitHub) en aktiv trussel. Bruk picklescan for å skanne filer før innlasting, eller bytt til SafeTensors-formatet for modellvekter. CVE-2025-1889: picklescan < 0.0.22 kunne omgås ved å bruke ikke-standard filendelser i arkivbaserte modellpakker.
Formatdetaljer
i et nøtteskallProgrammer som åpner PICKLE-filer
Tekniske detaljer
dyp spesifikasjon| Filkoding | Binær (protokoll 1-5); menneskelig lesbare ASCII-opkoder (protokoll 0) |
| Magic bytes | 0x80 etterfulgt av protokollversjon-byte; f.eks. 0x80 0x05 for protokoll 5 (Python 3.8+); protokoll 0 har ingen binær magic |
| Pickle-protokoller | 0 (ASCII, Python 1.x); 1 (binær, Python 1.x); 2 (nye klasser, Python 2.3+); 3 (bytes, Python 3.0+); 4 (objekter >4 GB, Python 3.4+); 5 (ut-av-bånd-buffere, Python 3.8+) |
| Standardprotokoll | Protokoll 5 er standard i Python 3.8 og nyere |
| Komprimering | Ingen innebygd; vanligvis pakket eksternt i gzip, bz2 eller lzma; joblib legger til sitt eget komprimeringslag |
| Kryptering | Ingen - ingen innebygd kryptering; krypter på filsystem- eller innpakningsnivå ved behov |
| Typisk filstørrelse | Under 1 MB for modellkonfigurasjoner; 1 MB - flere GB for ML-modellvekter og store datasett |
| Sikkerhetsrisiko | Deserialisering av upålitelige pickle-data kan kjøre vilkårlig Python-kode via __reduce__-hooks - unpickle aldri filer fra upålitelige kilder |
| Intern struktur | Strøm av pickle-opkoder som koder Python-objekter rekursivt; protokoll 4+ bruker rammer for stykkevis strømming; protokoll 5 legger til ut-av-bånd-buffere for zero-copy av store matriser |
| MIME-type | application/octet-stream (formelt); application/x-pickle (uformelt) |
| Plattformuavhengig | Plattformuavhengig; kjører på alle operativsystemer som støtter Python (Windows, Linux, macOS) |
| Serialiserings-API | dump() og dumps() for pickling; load() og loads() for unpickling |
| ML/AI-bruk | Primært serialiseringsformat for scikit-learn-modeller og PyTorch-sjekkpunkter; SafeTensors vinner terreng som et sikrere alternativ for modellvekter |
| Utgitt | 1994 (Python 1.1; pickle module first released) |
| Siste versjon | Protocol 5 (Python 3.8, 2019); default protocol 5 from Python 3.14 |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | docs.python.org |
PICKLE-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om PICKLE-filer.