Przejrzałem informacje podane w dokumentach Pythona , ale wciąż jestem trochę zdezorientowany. Czy ktoś mógłby napisać przykładowy kod, który napisałby nowy plik, a następnie użyć zalewy, aby wrzucić do niego słownik?
python
dictionary
pickle
Chachmu
źródło
źródło
Odpowiedzi:
Spróbuj tego:
źródło
pickle.HIGHEST_PROTOCOL
?__slots__
). Nie twierdzę, że zawsze powinieneś używaćHIGHEST_PROTOCOL
, ale upewnienie się, że nie używasz protokołu 0 lub 1, jest w rzeczywistości raczej ważne.pickle.HIGHEST_PROTOCOL
właściwie robi?Zaletą
HIGHEST_PROTOCOL
jest to, że pliki stają się mniejsze. To sprawia, że odznaczanie czasami jest znacznie szybsze.Ważna uwaga : Maksymalny rozmiar pliku marynowanego wynosi około 2 GB.
Alternatywny sposób
Alternatywne formaty
W przypadku aplikacji ważne mogą być:
Zobacz także: Porównanie formatów serializacji danych
Jeśli szukasz sposobu na utworzenie plików konfiguracyjnych, możesz przeczytać mój krótki artykuł Pliki konfiguracyjne w Pythonie
źródło
źródło
Ogólnie, wytrawianie
dict
nie powiedzie się, chyba że masz w nim tylko proste obiekty, takie jak łańcuchy i liczby całkowite.Nawet bardzo proste
dict
często się nie powiedzie. To zależy tylko od zawartości.Jeśli jednak używasz lepszego serializatora, takiego jak
dill
lubcloudpickle
, większość słowników można marynować:Lub jeśli chcesz zapisać swój
dict
plik ...Ten ostatni przykład jest identyczny z innymi dobrymi odpowiedziami zamieszczonymi tutaj (które oprócz zaniedbania możliwości wyboru zawartości
dict
są dobre).źródło
zwykle lepiej jest użyć implementacji cPickle
źródło
Jeśli chcesz zapisać nagranie w jednym pliku, użyj
pickle
tegoJeśli chcesz zapisać i przywrócić wiele słowników w wielu plikach do buforowania i przechowywać bardziej złożone dane, skorzystaj z pamięci podręcznej . Robi wszystkie inne rzeczy, których potrzebujesz
pickle
Anycache przechowuje różne
myfunc
wyniki w zależności od argumentów w różnych plikachcachedir
i ładuje je ponownie.Więcej informacji można znaleźć w dokumentacji .
źródło
Prosty sposób na zrzucenie danych Pythona (np. Słownika) do pliku marynowanego.
źródło
źródło
Wytrawianie było mylące (prawdopodobnie dlatego, że jestem gruby). Przekonałem się, że to działa:
Które możesz następnie zapisać do pliku tekstowego. Zrezygnowałem z prób używania marynaty, ponieważ otrzymywałem błędy mówiące, żebym zapisywał liczby całkowite w pliku .dat. Przepraszam, że nie użyłem marynaty.
źródło
dict
aby zawierała większą głębokość obiektów (które można wydrukować tylko przez nazwa) i / lub obiektów bez żadnej lub pełnej reprezentacji ciągu.