Python Unzip File: Jak extrahovat jeden nebo více souborů
On 24 září, 2021 by adminPython ZipFile je třída modulu zipfile pro čtení a zápis souborů zip. ZIP je formát archivních souborů, který podporuje bezeztrátovou kompresi dat.
Bezztrátovou kompresí rozumíme to, že kompresní algoritmus umožňuje z komprimovaných dat zcela rekonstruovat původní data.
Soubor ZIP je jeden soubor obsahující jeden nebo více komprimovaných souborů, který nabízí snadný způsob, jak zmenšit velké soubory a udržet související soubory pohromadě.
Python unzip file
Pro práci se soubory ZIP pomocí Pythonu použijeme vestavěný modul Pythonu s názvem zipfile. V modulu zipfile jazyka Python poskytuje třída ZipFile členskou funkci pro rozbalení celého obsahu archivu ZIP.
Pro rozbalení souboru v jazyce Python použijte metodu ZipFile.extractall(). Metoda extractall() přijímá jako argument cestu, members, pwd a rozbalí celý obsah.
Syntaxe
ZipFile.extractall(path=None, members=None, pwd=None)
Přijímá následující parametry :
- cesta: umístění, kde má být soubor ZIP rozbalen; pokud není zadána, rozbalí obsah v aktuálním adresáři.
- členy: seznam souborů, které mají být rozbaleny. Není-li tento argument zadán, rozbalí všechny soubory v souboru zip.
- pwd:
Příklad rozbalování v Pythonu
Řekněme, že v aktuálním pracovním adresáři mám soubor zip s názvem Mail3.zip a chci ho rozbalit pomocí ZipFile.extractall().
Podívejte se na následující kód.
# app.pyfrom zipfile import ZipFilewith ZipFile('Mail3.zip', 'r') as zipObj: # Extract all the contents of zip file in current directory zipObj.extractall()
Výstup
python3 app.py
Rozbalí soubory ve stejném adresáři jako váš programovací soubor app.py.
Rozbalí všechny soubory zip v aktuálním adresáři. Pokud se v místě extrakce již nacházejí soubory se stejným názvem, přepíše tyto soubory.
Pro otevření souborů jsme použili příkaz Python with. Příkaz „Python with“ zajišťuje automatické uzavření otevřených deskriptorů souborů poté, co provádění programu opustí kontext příkazu with.
Vyjmutí všech souborů ze souboru zip do jiného adresáře
Můžeme vyjmout všechny soubory ze souboru zip do jiného adresáře a k tomu potřebujeme předat cílové umístění jako argument příkazu extractall(). Cesta může být relativní nebo absolutní.
Podívejte se na následující kód.
# 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')
Zde je objekt ZipFile vytvořen voláním konstruktoru ZipFile, který přijímá název souboru zip a parametry mode. Objekt ZipFile vytvoříme v režimu READ a pojmenujeme jej jako zipObj.
Ve výstupu. Pokud složka temp neexistuje, vytvoří tuto složku v aktuálním Adresáři a rozbalí celý obsah souboru Mail3.zip.
Výstup
python3 app.pyFile is unzipped in temp folder
Extrahujte soubory z velkého souboru zip na základě podmínky
Řekněme, že máme obrovský soubor zip a potřebujeme několik souborů z tisíce souborů v archivu. Rozbalení všech souborů z velkého archivu zip může trvat několik minut. Pokud však máme zájem pouze o několik málo souborů z archivu, pak místo rozbalování celého souboru můžeme ze souboru ZIP extrahovat i jednotlivé soubory.
Třída Python ZipFile poskytuje členskou funkci pro extrakci jednoho souboru ze souboru ZIP.
ZipFile.extract(member, path=None, pwd=None)
Podívejte se na následující kód.
# 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')
Pokud mají názvy souborů příponu .py, pak se extrahují uvnitř složky temp_py. V opačném případě soubory nerozbalí.
Závěr
Rozbalení souborů v Pythonu je velmi snadné, protože Python poskytuje modul zipfile.
Modul zipfile má všechny funkce pro rozbalení jednoho nebo více souborů na základě zadaných podmínek.
Konec výukového programu Rozbalování v jazyce Python: Jak rozbalit jeden nebo více souborů je u konce.
Viz také
Python zip()
Python zip seznamy
Python zip slovník
Rozbalování Python tuples
Python seznam na datový rámec
Python seznam na slovník
Napsat komentář