Bestanden uitpakken in Python

Ik heb de ZipFile-documentatiedoorgelezen, maar kon niet begrijpen hoe een bestand uitgepaktmoest worden, alleen hoe een bestand te zippen. Hoe pak ik alle inhoud van een zipbestand uit in dezelfde map?


Antwoord 1, autoriteit 100%

import zipfile
with zipfile.ZipFile(path_to_zip_file, 'r') as zip_ref:
    zip_ref.extractall(directory_to_extract_to)

Dat is het zo’n beetje!


Antwoord 2, autoriteit 31%

Als u Python 3.2of hoger gebruikt:

import zipfile
with zipfile.ZipFile("file.zip","r") as zip_ref:
    zip_ref.extractall("targetdir")

U hoeft de closeof try/catchhierbij niet te gebruiken omdat het de
contextmanagerconstructie.


Antwoord 3, autoriteit 4%

Gebruik de methode extractallals je Python 2.6+ gebruikt

zip = ZipFile('file.zip')
zip.extractall()

Antwoord 4, autoriteit 3%

ZipFileis een enigszins laag niveau bibliotheek. Tenzij je de details nodig hebt die het biedt, kun je wegkomen met shutil‘s hogere functies make_archiveen unpack_archive.

make_archiveis al beschreven in ditantwoord. Wat betreft unpack_archive:

import shutil
shutil.unpack_archive(filename, extract_dir)

unpack_archivedetecteert het compressieformaat automatisch vanaf de “extensie” van filename(.zip, .tar.gz, enz.), en dat geldt ook voor make_archive. Ook kunnen filenameen extract_direlke pad-achtigeobjecten (bijv. pathlib.Pathinstanties) sinds Python 3.7.


Antwoord 5

U kunt ook alleen ZipFileimporteren:

from zipfile import ZipFile
zf = ZipFile('path_to_file/file.zip', 'r')
zf.extractall('path_to_extract_folder')
zf.close()

Werkt in Python 2en Python 3.


Antwoord 6

probeer dit:


import zipfile
def un_zipFiles(path):
    files=os.listdir(path)
    for file in files:
        if file.endswith('.zip'):
            filePath=path+'/'+file
            zip_file = zipfile.ZipFile(filePath)
            for names in zip_file.namelist():
                zip_file.extract(names,path)
            zip_file.close() 

pad : het pad van het bestand uitpakken


Antwoord 7

from zipfile import ZipFile
ZipFile("YOURZIP.zip").extractall("YOUR_DESTINATION_DIRECTORY")

De map waar u uw bestanden uitpakt, hoeft niet eerder te bestaan, noem maar op op dit moment

YOURZIP.zip is de naam van de zip als uw project zich in dezelfde map bevindt.
Als dat niet het geval is, gebruik dan het PATH, d.w.z.: C://….//YOURZIP.zip

Denk eraan om te ontsnappen aan de /door een andere /in het PATH
Als je een permission deniedhebt, probeer dan je ide (d.w.z. Anaconda) als beheerder te starten

YOUR_DESTINATION_DIRECTORY wordt gemaakt in dezelfde map als uw project


Antwoord 8

Als je het in shell wilt doen, in plaats van code te schrijven.

python3 -m zipfile -e myfiles.zip myfiles/

myfiles.zipis het zip-archief en myfilesis het pad om de bestanden uit te pakken.


Antwoord 9

import os 
zip_file_path = "C:\AA\BB"
file_list = os.listdir(path)
abs_path = []
for a in file_list:
    x = zip_file_path+'\\'+a
    print x
    abs_path.append(x)
for f in abs_path:
    zip=zipfile.ZipFile(f)
    zip.extractall(zip_file_path)

Dit bevat geen validatie voor het bestand als het geen zip is. Als de map een niet-zip-bestand bevat, zal het mislukken.

Other episodes