Zipping to elegancki sposób kompresji kilku plików i łączenia ich w jeden. Oszczędza to nie tylko przestrzeń dyskową, ale także przepustowość podczas przesyłania pliku przez sieć. Jedną z najlepszych cech zip jest to, że działa na wszystkich głównych platformach: Windows, Linux i Mac.
Zip używa bezstratnej kompresji, dzięki czemu zachowuje wszystkie dane podczas kompresji i dekompresji. Możesz także szyfrować i odszyfrowywać pliki ZIP.
Przy tak wielu funkcjach do odkrycia odkryj, jak czytać, kompresować i rozpakowywać pliki za pomocą modułu zipfile Pythona.
Co to jest moduł zipfile?
Możesz użyć standardowego modułu zipfile do manipulowania plikami zip za pomocą Pythona. Za pomocą tego modułu możesz otwierać i czytać pliki ZIP, czytać ich metadane, tworzyć pliki ZIP, kompresować je i rozpakowywać. Dostępne są trzy metody kompresji: Deflate, Bzip2 i LZMA.
Jedną z rzeczy, których brakuje modułowi, jest możliwość obsługi plików wielodyskowych, ale obsługuje rozszerzenie ZIP64. Może również odszyfrować archiwa zip, ale nie może ich zaszyfrować. Za pomocą modułu zipfile możesz uzyskać metadane pliku zip, takie jak data i godzina modyfikacji. Możesz także pobrać szczegółowe informacje, takie jak system operacyjny użyty do utworzenia pliku, wersję zip i rozmiar pliku zarówno w formacie skompresowanym, jak i nieskompresowanym.
Jak spakować pliki za pomocą Pythona
Możesz spakować wiele plików do jednego archiwum za pomocą modułu zipfile Pythona. Importuj Plik zip moduł z plik zip package, aby wykonać wymagane operacje ZIP. Również importuj the os moduł do wybierania i zapisywania plików.
Zdefiniuj funkcję get_all_file_paths(). Powinien akceptować parametr katalogu zawierający ścieżkę do folderu zawierającego pliki do skompresowania.
Zainicjuj pustą listę, która będzie przechowywać listę ścieżek plików. Użyj pętli for, aby uzyskać pełną zawartość katalogu docelowego za pomocą os.walk() funkcjonować. Ta funkcja pobiera nazwy plików w drzewie katalogów, poruszając się wzdłuż niego w podejściu z góry na dół lub z dołu do góry. Dla każdego katalogu funkcja zwraca potrójną krotkę zawierającą katalog główny, katalogi i pliki.
Korzeń to łańcuch zawierający pełną ścieżkę do katalogu. Lista dirs zawiera wszystkie podkatalogi zawarte w katalogu. Lista plików zawiera wszystkie pliki znajdujące się w katalogu.
Wewnątrz pętli zadeklaruj inną pętla do iteracji po liście plików. Użyj os.ścieżka.join() funkcja łącząca nazwę katalogu z każdą nazwą pliku w celu utworzenia pełnej ścieżki. Następnie dołącz tę pełną nazwę pliku do utworzonej wcześniej listy. Po zakończeniu tej operacji zwróć listę ścieżek plików.
# zaimportuj wymagane moduły
z plik zip import Plik zip
import os# utwórz funkcję, aby uzyskać wszystkie ścieżki do plików
pokget_all_file_paths(informator):
# inicjowanie pustej listy do przechowywania ścieżek plików
ścieżki_plików = []# poruszaj się po plikach
Doźródło, katalogi, aktaWos.chodzić(informator):
dla nazwy pliku w plikach:
# dołącz do katalogu głównego i nazwy pliku, aby utworzyć pełną ścieżkę do pliku
ścieżka do pliku = os.ścieżka.join (root, nazwa pliku)
ścieżki_plików.dodać(ścieżka pliku)
# zwracanie wszystkich ścieżek plików
powrót ścieżki_plików
Zapisz ścieżkę do folderu zawierającego pliki, które chcesz skompresować, w zmiennej o nazwie katalog. Wywołaj funkcję, get_all_file_paths() który utworzyłeś wcześniej i przechowujesz wartość, w której zwraca ścieżki_plików.
Wyświetl wiadomość dla użytkownika, aby wiedział, że są to pliki, które program skompresuje. Przejrzyj pliki i wyświetl ich nazwy.
Podaj nazwę, jaką ma mieć plik zip, wraz ze specyfikacją, że program zwraca plik z możliwością zapisu, używając instrukcji with do obsługi wyjątków. Iteruj po każdym pliku i użyj funkcji write() nad zapisywalnym plikiem do pliku ZIP.
Po zakończeniu operacji wyświetl komunikat wyjaśniający, że program pomyślnie spakował wszystkie pliki.
# ścieżka do folderu, który chcesz skompresować
katalog = './pythonzip'# funkcja wywołująca, aby uzyskać wszystkie ścieżki plików w katalogu
ścieżki_plików = get_all_file_paths (katalog)# drukowanie listy wszystkich plików, które chcesz spakować
wydrukować('Lista plików, które zostaną spakowane:')dla nazwa_pliku w ścieżkach_plików:
wydrukować(Nazwa pliku)# zapisywanie plików do pliku zip
z Plik zip(„mój_plik.zip”, „w”) Jak zamek błyskawiczny:
# zapisz każdy plik jeden po drugim
dla pliku w file_paths:
zamek błyskawiczny.pisać(plik)
wydrukować(„Wszystkie pliki są spakowane!”)
Jak rozpakować pliki za pomocą Pythona
Implementacja rozpakowywania plików za pomocą modułu zipfile jest dużo prostsza. Importuj plik zip paczka od Plik zip module i zapisz nazwę pliku zip, który chcesz wyodrębnić w zmiennej. Użyj instrukcji with do obsługi wyjątków i otwórz plik, który chcesz wyodrębnić w trybie do odczytu. Użyj printdir() funkcja wyświetlająca spis treści plików znajdujących się w ZIP.
Wyświetl komunikat o postępie, że rozpakowujesz pliki i użyj Wypakuj wszystko() funkcja wyodrębniania zawartości pliku zip do bieżącego katalogu roboczego. Alternatywnie możesz dołączyć parametr ścieżki, aby zmienić ścieżkę, w której program wyodrębnia pliki.
Wyświetl wiadomość za pomocą wydrukować oświadczenie o zakończeniu operacji.
# importowanie wymaganych modułów
z plik zip import Plik zip# podaj nazwę pliku zip, który chcesz wyodrębnić
nazwa_pliku = "wyodrębnij.zip"# otwarcie pliku zip w trybie odczytu
z ZipFile (nazwa_pliku, 'R') Jak zamek błyskawiczny:
# wyświetl zawartość pliku zip
zamek błyskawiczny.printdir()
# wyodrębnianie wszystkich plików
wydrukować(„Wyodrębnianie w toku…”)
zamek błyskawiczny.Wypakuj wszystko()
wydrukować(„Wszystkie pliki zostały wyodrębnione!”)
Więcej informacji o plikach ZIP
Pliki zip zyskały dużą popularność i są używane od dziesięcioleci. Popularne witryny, takie jak GitHub i Dysk Google, umożliwiają pobieranie kolekcji plików jako archiwum ZIP. Program zip kompresuje zestaw plików w jeden pakiet. Kontrastuje to z narzędziem takim jak tar, które pakuje pliki razem, ale ich nie kompresuje.
Jeśli chcesz zaszyfrować swoje pliki przy użyciu bardziej wydajnego algorytmu, pliki RAR są do zrobienia. RAR używa algorytmu AES-128, który jest lepszy niż algorytm deflate używany w plikach ZIP. Ostatecznie wybierz ten, który najlepiej odpowiada Twoim potrzebom.