Co to jest format pliku PICKLE?
Pliki z rozszerzeniem .pickle przechowują obiekty Pythona zserializowane przy użyciu modułu pickle, wbudowanej biblioteki Pythona do serializacji obiektów. Zarówno .pickle, jak i .pkl są zamiennymi rozszerzeniami tego samego formatu; .pickle jest dłuższą, jawną formą, podczas gdy .pkl to kompaktowy, trójznakowy wariant używany od wersji Python 1.x.
Zawartość plików Python Pickle
Zserializowane obiekty w plikach .pickle mogą być dowolnego typu Pythona. Pliki .pickle są używane do serializacji obiektów baz danych, buforowania wag modeli uczenia maszynowego lub przechowywania stanu programu między uruchomieniami. Należy używać wyłącznie plików .pickle z zaufanych źródeł, ponieważ mogą one zawierać złośliwe oprogramowanie - deserializacja niezaufanego pliku pickle może wykonać dowolny kod Pythona. Obiekty pickle mogą być kompresowane zewnętrznie za pomocą gzip, bz2 lub lzma.
Jak powstają pliki Python PICKLE?
Proces serializacji nazywany jest „picklingiem” i odbywa się za pomocą metod dump() oraz dumps(). Metoda dump() służy do serializacji obiektu do pliku, natomiast dumps() zapisuje obiekt jako obiekt bajtowy. Deserializacja - konwersja strumienia bajtów z powrotem na oryginalny obiekt - odbywa się za pomocą load() i loads(); proces ten nazywany jest „unpicklingiem”.
Wersja protokołu pickle kontroluje format binarny. Protokół 0 to czytelny dla człowieka kod ASCII; protokoły 1-5 są progresywnie binarne, przy czym protokół 5 (Python 3.8+) dodaje bufory out-of-band dla wydajnej obsługi dużych tablic .NPY. W przepływach pracy uczenia maszynowego format .pickle jest szeroko stosowany do utrwalania modeli scikit-learn i punktów kontrolnych PyTorch, choć SafeTensors zyskuje na popularności jako bezpieczniejsza alternatywa, szczególnie dla wag modeli.
Bezpieczeństwo
RYZYKO: HIGHKRYTYCZNE OSTRZEŻENIE: Pliki Pickle mogą wykonywać dowolny kod Pythona podczas ładowania. Złośliwy plik .pickle może usunąć pliki, pobrać złośliwe oprogramowanie lub przejąć kontrolę nad systemem. Nigdy nie ładuj pliku pickle z niezaufanego źródła. W przepływach pracy ML/AI złośliwe pliki pickle w repozytoriach modeli (Hugging Face Hub, GitHub) stanowią aktywne zagrożenie. Użyj picklescan do skanowania plików przed załadowaniem lub przejdź na format SafeTensors dla wag modeli. CVE-2025-1889: picklescan < 0.0.22 mógł zostać pominięty przy użyciu niestandardowych rozszerzeń plików w pakietach modeli opartych na archiwach.
Szczegóły formatu
w pigułceProgramy otwierające pliki PICKLE
Szczegóły techniczne
specyfikacja| Kodowanie pliku | Binarny (protokoły 1-5); czytelne dla człowieka kody operacyjne ASCII (protokół 0) |
| Sygnatura pliku (magic bytes) | 0x80 po którym następuje bajt wersji protokołu; np. 0x80 0x05 dla protokołu 5 (Python 3.8+); protokół 0 nie posiada binarnej sygnatury |
| Protokoły Pickle | 0 (ASCII, Python 1.x); 1 (binarny, Python 1.x); 2 (klasy nowego stylu, Python 2.3+); 3 (bajty, Python 3.0+); 4 (obiekty >4 GB, Python 3.4+); 5 (bufory out-of-band, Python 3.8+) |
| Domyślny protokół | Protokół 5 jest domyślny w Pythonie 3.8 i nowszych |
| Kompresja | Brak wbudowanej; powszechnie pakowane zewnętrznie w gzip, bz2 lub lzma; joblib dodaje własną warstwę kompresji |
| Szyfrowanie | Brak - brak wbudowanego szyfrowania; w razie potrzeby szyfruj na poziomie systemu plików lub warstwy opakowującej |
| Typowy rozmiar pliku | Poniżej 1 MB dla konfiguracji modeli; od 1 MB do kilku GB dla wag modeli ML i dużych zestawów danych |
| Ryzyko bezpieczeństwa | Deserializacja niezaufanych danych pickle może wykonać dowolny kod Pythona poprzez haki __reduce__ - nigdy nie wykonuj unpicklingu plików z niezaufanych źródeł |
| Struktura wewnętrzna | Strumień kodów operacyjnych pickle kodujący obiekty Pythona rekurencyjnie; Protokół 4+ używa ramek do strumieniowania fragmentów; Protokół 5 dodaje bufory out-of-band dla kopiowania zerowego dużych tablic |
| Typ MIME | application/octet-stream (formalnie); application/x-pickle (nieformalnie) |
| Wieloplatformowość | Niezależny od platformy; działa na każdym systemie operacyjnym obsługiwanym przez Pythona (Windows, Linux, macOS) |
| API serializacji | dump() i dumps() dla picklingu; load() i loads() dla unpicklingu |
| Zastosowanie w ML/AI | Podstawowy format serializacji dla modeli scikit-learn i punktów kontrolnych PyTorch; SafeTensors zyskuje na popularności jako bezpieczniejsza alternatywa dla wag modeli |
| Wydano | 1994 (Python 1.1; pickle module first released) |
| Najnowsza wersja | Protocol 5 (Python 3.8, 2019); default protocol 5 from Python 3.14 |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | docs.python.org |
Konwersje PICKLE
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki PICKLE.