Python Unzip File: How To Extract Single or Multiple Files
On 24 września, 2021 by adminPython ZipFile jest klasą modułu zipfile do odczytu i zapisu plików zip. ZIP jest formatem pliku archiwum, który obsługuje bezstratną kompresję danych.
Przez bezstratną kompresję rozumiemy, że algorytm kompresji pozwala na całkowite odtworzenie oryginalnych danych z danych skompresowanych.
Plik ZIP to pojedynczy plik zawierający jeden lub więcej skompresowanych plików, oferujący łatwy sposób na zmniejszenie dużych plików i przechowywanie powiązanych plików razem.
Plik rozpakowany w Pythonie
Aby pracować na plikach zip przy użyciu Pythona, użyjemy wbudowanego modułu Pythona o nazwie zipfile. W module zipfile Pythona, klasa ZipFile udostępnia funkcję członkowską do rozpakowania całej zawartości archiwum ZIP.
Aby rozpakować plik w Pythonie, należy użyć metody ZipFile.extractall(). Metoda extractall() przyjmuje jako argument ścieżkę, członków, pwd i wyodrębnia całą zawartość.
Syntaktyka
ZipFile.extractall(path=None, members=None, pwd=None)
Akceptuje następujące parametry :
- ścieżka: lokalizacja, gdzie plik zip ma zostać wyodrębniony; jeśli nie zostanie podana, wyodrębni zawartość w bieżącym katalogu.
- członkowie: lista plików do wyodrębnienia. Jeśli ten argument nie zostanie podany, zostaną wyodrębnione wszystkie pliki w pliku zip.
- pwd: Jeśli plik zip jest zaszyfrowany, to przekaż hasło w tym argumencie domyślnie jest to Brak.
Przykład rozpakowywania w Pythonie
Powiedzmy, że w moim bieżącym katalogu roboczym mam plik zip o nazwie Mail3.zip i chcę go rozpakować za pomocą metody ZipFile.extractall().
Zobacz poniższy kod.
# app.pyfrom zipfile import ZipFilewith ZipFile('Mail3.zip', 'r') as zipObj: # Extract all the contents of zip file in current directory zipObj.extractall()
Wyjście
python3 app.py
Wyodrębni ona pliki znajdujące się w tym samym katalogu co plik app.py.
Wyodrębni ona wszystkie pliki w zipie w bieżącym katalogu. Jeśli pliki o tej samej nazwie są już obecne w miejscu ekstrakcji, to nadpisze te pliki.
Użyliśmy instrukcji Python with, aby otworzyć pliki. „Python with” zapewnia, że otwarte deskryptory plików są zamykane automatycznie po tym, jak wykonanie programu opuści kontekst instrukcji with.
Wyodrębnij wszystkie pliki z pliku zip do innego katalogu
Możemy wyodrębnić wszystkie pliki z pliku zip do innego katalogu, aby to zrobić, musimy przekazać lokalizację docelową jako argument w funkcji extractall(). Ścieżka może być względna lub bezwzględna.
Zobacz poniższy kod.
# app.pyfrom zipfile import ZipFilewith ZipFile('Mail3.zip', 'r') as zipObj: # Extract all the contents of zip file in different directory zipObj.extractall('temp') print('File is unzipped in temp folder')
Tutaj obiekt ZipFile jest tworzony przez wywołanie konstruktora ZipFile, który akceptuje nazwę pliku zip i parametry trybu. Tworzymy obiekt ZipFile w trybie READ i nadajemy mu nazwę zipObj.
W wyjściu. Jeśli folderu tymczasowego nie ma, utworzy ten folder w bieżącym katalogu i rozpakuje całą zawartość pliku Mail3.zip.
Wyjście
python3 app.pyFile is unzipped in temp folder
Wyodrębnianie plików z dużego pliku zip na podstawie warunku
Powiedzmy, że mamy ogromny plik zip i potrzebujemy kilku plików z tysiąca plików w archiwum. Rozpakowanie wszystkich plików z dużego zipa może zająć kilka minut. Ale jeśli jesteśmy zainteresowani tylko kilkoma zarchiwizowanymi plikami, to zamiast rozpakowywać cały plik, możemy wyodrębnić pojedynczy plik z pliku zip.
Klasa Python ZipFile udostępnia funkcję członkowską do wyodrębniania pojedynczego pliku z pliku ZIP.
ZipFile.extract(member, path=None, pwd=None)
Zobacz następujący kod.
# app.pyfrom zipfile import ZipFilewith ZipFile('Mail3.zip', 'r') as zipObject: listOfFileNames = zipObject.namelist() for fileName in listOfFileNames: if fileName.endswith('.py'): # Extract a single file from zip zipObject.extract(fileName, 'temp_py') print('All the python files are extracted')
Jeśli nazwy plików mają rozszerzenie .py, to wyodrębni je wewnątrz folderu temp_py. W przeciwnym razie nie rozpakuje plików.
Wniosek
Upakowanie plików w Pythonie jest bardzo proste, ponieważ Python udostępnia moduł zipfile.
Moduł zipfile ma wszystkie funkcje rozpakowywania pojedynczych lub wielu plików na podstawie warunków.
Wreszcie, Python Unzip: Jak Rozpakować Pojedynczy lub Wiele Plików jest zakończony.
Patrz także
Python zip()
Python zip lista list
Python zip słownik
Unzip Python tuples
Python lista do dataframe
Python lista do słownika
Przykłady.
Dodaj komentarz