Ich habe die zipfileDokumentation gelesen , konnte aber nicht verstehen, wie man eine Datei entpackt , sondern nur, wie man eine Datei komprimiert . Wie entpacke ich den gesamten Inhalt einer Zip-Datei in dasselbe Verzeichnis?
Was ist, wenn der Inhalt des ZIP-Archivs in allen ZIP-Archiven gleich ist? Wie benenne ich den Inhalt vor dem Extrahieren um? Beispiel: 1.zip 2.zip .. alle enthalten content.txt: alle wie 1content.txt extrahieren 2content.txt?
Iratzhash
8
@iratzhash Normalerweise erstelle ich mit tempfile ein neues temporäres Verzeichnis für den Inhalt: docs.python.org/3/library/tempfile.html Ich entpacke in das temporäre Verzeichnis und verschiebe / organisiere die Dateien von dort.
Dave Forgac
8
@ 3kstc würde ich from zipfile import ZipFile. Wenn Sie es verwenden, müssen Sie es nicht mehr verwenden zipfile.ZipFileund können es verwenden ZipFile(zip_file_name).
Debug255
@iratzhash Mir ist klar, dass du vor 1,5 Jahren einen Kommentar abgegeben hast. Aber nur damit andere wissen, sind Inhalte in einer Zip-Datei normalerweise schreibgeschützt. Eine gute Antwort ist hier von "bouke"
Debug255
Eine Art Meta-Notiz, aber die Bearbeitung vom November 2018 macht dies ziemlich identisch mit einer anderen Antwort, die bereits den Kontextmanager verwendet hat (und Links zu dem, was das bedeutet).
Vielen Dank für Ihre Aufmerksamkeit @MylesHollowed Dies ist jedoch keine Kopie der akzeptierten Antwort. Ich stimme zu, dass sie einander ähnlich sind, aber sie sind unterschiedlich. Dies wird auch durch Ihren Kommentar angezeigt, da der akzeptierte definitiv besser für Sie ist als meiner. Wenn es eine Kopie wäre, wäre es dasselbe ... Für jemanden kann meine Antwort wertvoll sein, weil sie vielleicht besser lesbar ist und wie Sie bemerkt haben, weniger Code importieren ... Aufgrund dieser Unterschiede habe ich beschlossen, meine Antwort zu geben eine Alternative geben. Können wir deshalb nicht andere Antworten geben, nachdem wir eine akzeptiert haben? Alles Gute
simhumileco
Was ist los mit dieser Antwort? Warum hat ihr jemand einen negativen Punkt gegeben? Immerhin ist es die Antwort auf die Frage und zeichnet sich durch ihre Einfachheit im Vergleich zu anderen Antworten aus, was für einige Leute wichtig sein kann, die nach einer Antwort suchen. Ist es nicht?
simhumileco
1
@MylesHollowed import zipfile.ZipFilegeneriert ModuleNotFoundError: No module named 'zipfile.ZipFile'; 'zipfile' is not a packagein 3.6.5. Ich bin offen dafür, dass meinerseits ein Bedienerfehler vorliegt, aber ich weiß nicht, was es ist.
MikeF
6
Versuche dies :
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()
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)
Dies enthält keine Validierung für die Datei, wenn sie nicht komprimiert ist. Wenn der Ordner keine ZIP-Datei enthält, schlägt dies fehl.
Antworten:
Das wars so ziemlich!
quelle
from zipfile import ZipFile
. Wenn Sie es verwenden, müssen Sie es nicht mehr verwendenzipfile.ZipFile
und können es verwendenZipFile(zip_file_name)
.Wenn Sie Python 3.2 oder höher verwenden:
Sie müssen das Schließen oder Try / Catch nicht verwenden, da es die Kontextmanager- Konstruktion verwendet.
quelle
zipfile
+pathlib
= gewinnen. Stört es Sie, wenn ich Ihre Antwort leicht aktualisiere?Verwenden Sie die
extractall
Methode, wenn Sie Python 2.6+ verwendenquelle
Sie können auch nur importieren
ZipFile
:Funktioniert in Python 2 und Python 3 .
quelle
import zipfile.ZipFile
generiertModuleNotFoundError: No module named 'zipfile.ZipFile'; 'zipfile' is not a package
in 3.6.5. Ich bin offen dafür, dass meinerseits ein Bedienerfehler vorliegt, aber ich weiß nicht, was es ist.Versuche dies :
Pfad: Entpacken Sie den Pfad der Datei
quelle
Dies enthält keine Validierung für die Datei, wenn sie nicht komprimiert ist. Wenn der Ordner keine ZIP-Datei enthält, schlägt dies fehl.
quelle