Python Unzip File: Hur man extraherar en eller flera filer
On september 24, 2021 by adminPython ZipFile är en klass av zipfile-modul för att läsa och skriva zip-filer. ZIP är ett arkivfilformat som stöder förlustfri datakomprimering.
Med förlustfri komprimering menas att komprimeringsalgoritmen gör det möjligt att helt rekonstruera originaldata från de komprimerade data.
En ZIP-fil är en enda fil som innehåller en eller flera komprimerade filer och erbjuder ett enkelt sätt att göra stora filer mindre och hålla samman relaterade filer.
Python unzip file
För att arbeta med zip-filer med hjälp av Python kommer vi att använda en inbyggd pythonmodul som heter zipfile. I Pythons zipfile-modul tillhandahåller ZipFile-klassen en medlemsfunktion för att extrahera allt innehåll i ZIP-arkivet.
För att packa upp en fil i Python använder du metoden ZipFile.extractall(). Metoden extractall() tar en sökväg, members, pwd som argument och extraherar allt innehåll.
Syntax
ZipFile.extractall(path=None, members=None, pwd=None)
Den accepterar följande parametrar :
- sökväg: Plats där zip-filen ska extraheras; om den inte anges kommer den att extrahera innehållet i den aktuella katalogen.
- members: Lista över filer som ska extraheras. Den kommer att extrahera alla filer i zip-filen om detta argument inte anges.
- pwd: Om zip-filen är krypterad, ange lösenordet i detta argument, standard är None.
Exempel på Python unzip
Säg att jag i min nuvarande arbetskatalog har en zip-fil som heter Mail3.zip, och jag vill packa upp den med hjälp av ZipFile.extractall()-metoden.
Se följande kod.
# app.pyfrom zipfile import ZipFilewith ZipFile('Mail3.zip', 'r') as zipObj: # Extract all the contents of zip file in current directory zipObj.extractall()
Output
python3 app.py
Det kommer att extrahera filerna i samma katalog som din programmeringsapp.py-fil.
Det kommer att extrahera alla filer i zip-filen i den aktuella katalogen. Om det redan finns filer med samma namn på utvinningsplatsen kommer den att skriva över dessa filer.
Vi har använt Python with statement för att öppna filerna. ”Python with” säkerställer att öppna fildeskriptorer stängs automatiskt när programutförandet lämnar kontexten för with-anvisningen.
Extrahera alla filer från en zip-fil till en annan katalog
Vi kan extrahera alla filer från zip-filen till en annan katalog, och för att göra det måste vi lämna destinationsplatsen som ett argument i extractall(). Sökvägen kan vara relativ eller absolut.
Se följande 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')
Här skapas ett ZipFile-objekt genom att anropa en ZipFile-konstruktör, som accepterar zip-filens namn och lägesparametrar. Vi skapar ZipFile-objektet i läget READ och ger det namnet zipObj.
I utmatningen. Om temp-mappen inte finns där kommer den att skapa den mappen i den aktuella katalogen och packa upp allt innehåll i filen Mail3.zip.
Output
python3 app.pyFile is unzipped in temp folder
Extrahera filer från en stor zip-fil baserat på villkoret
Vad sägs om att vi har en stor zip-fil och att vi behöver några få filer från de tusentals filerna i arkivet. Att packa upp alla filer från en stor zip-fil kan ta minuter. Men om du bara är intresserad av några av de arkiverade filerna kan vi i stället för att packa upp hela filen extrahera även den enskilda filen från zip-filen.
Python ZipFile-klassen tillhandahåller en medlemsfunktion för att extrahera en enskild fil från en ZIP-fil.
ZipFile.extract(member, path=None, pwd=None)
Se följande 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')
Om filnamnen har .py-tillägget extraheras filen i mappen temp_py. Annars kommer den inte att extrahera filerna.
Slutsats
Det är mycket enkelt att packa upp filer i Python eftersom Python tillhandahåller zipfile-modulen.
Zipfile-modulen har alla funktioner för att packa upp en eller flera filer baserat på villkoren.
Enligt är Python Unzip: Hur man extraherar enstaka eller flera filer handledning är över.
Se även
Python zip()
Python zip lista över listor
Python zip ordbok
Unzip Python tuples
Python list to dataframe
Python list to dictionary
Lämna ett svar