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 extractall
als je Python 2.6+ gebruikt
zip = ZipFile('file.zip')
zip.extractall()
Antwoord 4, autoriteit 3%
ZipFile
is een enigszins laag niveau bibliotheek. Tenzij je de details nodig hebt die het biedt, kun je wegkomen met shutil
‘s hogere functies make_archive
en unpack_archive
.
make_archive
is al beschreven in ditantwoord. Wat betreft unpack_archive
:
import shutil
shutil.unpack_archive(filename, extract_dir)
unpack_archive
detecteert het compressieformaat automatisch vanaf de “extensie” van filename
(.zip
, .tar.gz
, enz.), en dat geldt ook voor make_archive
. Ook kunnen filename
en extract_dir
elke pad-achtigeobjecten (bijv. pathlib.Pathinstanties) sinds Python 3.7.
Antwoord 5
U kunt ook alleen ZipFile
importeren:
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 denied
hebt, 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.zip
is het zip-archief en myfiles
is 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.