Artikelverzeichnis
einführen
zipfile ist ein integriertes Modul von Python, das eine Schnittstelle zum Lesen und Schreiben von Archivdateien im ZIP-Format bereitstellt. ZIP-Dateien sind ein gängiges Archivdateiformat, das mehrere Dateien und Verzeichnisse in einer einzigen Datei komprimiert. Für uns ist es bequem, Dateien im Zip-Format zu lesen und zu schreiben.
Methode
Zip-Datei()
ZipFile-Klasse: Stellt ein ZIP-Dateiobjekt dar, das zum Lesen oder Schreiben von ZIP-Dateien verwendet werden kann. Sie können eine ZIP-Datei öffnen, indem Sie ein ZipFile-Objekt instanziieren und dann dessen Methoden verwenden, um Dateien und Verzeichnisse zu bearbeiten.
import zipfile
file = zipfile.ZipFile('chat-gpt-website-master.zip', mode='r', compression=zipfile.ZIP_STORED)
Der erste Parameter ist der Name der ZIP-Datei, die gelesen oder geschrieben werden soll. „
mode“ gibt den gewünschten Modus an, „r“ steht für „Lesen“, „w“ für „Schreiben“ und „a“ für das Anhängen. Der Standardwert ist der Lesemodus.
Komprimierung gibt den Komprimierungsmodus an
Komprimierungsmodus | Bedeutung |
---|---|
ZIP_STORED | Keine Komprimierung, Standardeinstellung |
ZIP_DEFLATED | Häufig verwendete ZIP-Komprimierung |
ZIP_BZIP2 BZIP2 | Kompression |
ZIP_LZMA LZMA | Kompression |
ZipFile.read() und ZipFile.close()
Methode ZipFile.read(): Liest den Dateiinhalt in der ZIP-Datei. pwd kann das Dekomprimierungskennwort angeben.
ZipFile.close()-Methode: Schließen Sie das ZIP-Dateiobjekt und geben Sie Ressourcen frei.
import zipfile
file = zipfile.ZipFile('chat-gpt-website-master.zip', mode='r', compression=zipfile.ZIP_STORED)
print(file.read('chat-gpt-website-master/requirements.txt'))
file.close()
zipfile.is_zipfile(Dateiname)
zipfile.is_zipfile(filename) bestimmt, ob es sich um eine ZIP-Datei handelt. Wenn dies der Fall ist, wird True zurückgegeben, andernfalls wird False zurückgegeben.
import zipfile
file = zipfile.is_zipfile('chat-gpt-website-master.zip')
print(file)
ZipInfo()
ZipInfo-Klasse: Stellt Informationen zu einer Datei oder einem Verzeichnis in einer ZIP-Datei dar, einschließlich Name, Größe, Komprimierungsmethode usw. Das ZipInfo-Objekt kann über die getinfo()-Methode des ZipFile-Objekts abgerufen werden.
import zipfile
file = zipfile.ZipFile('chat-gpt-website-master.zip', mode='r', compression=zipfile.ZIP_STORED)
for i in file.namelist():
print(file.getinfo(i)) # 传入文件名
infolist()
infolist() gibt ein ZipInfo-Objekt zurück, das Informationen über alle Mitglieder in der ZIP-Datei enthält
import zipfile
file = zipfile.ZipFile('chat-gpt-website-master.zip', mode='r', compression=zipfile.ZIP_STORED)
print(file.infolist())
Namensliste()
namelist() gibt eine nach Namen sortierte Liste von Dateien zurück
import zipfile
file = zipfile.ZipFile('chat-gpt-website-master.zip', mode='r', compression=zipfile.ZIP_STORED)
print(file.namelist())
extract() und extractall()
Methode | Bedeutung |
---|---|
Extrakt() | Entpacken Sie die angegebene Datei |
alles extrahieren() | Entpacken Sie alle Dateien |
Beispiel für die Methode extract()
import zipfile
# 打开ZIP文件
with zipfile.ZipFile('example.zip', 'r') as zip_file:
# 解压指定文件到指定目录
zip_file.extract('file.txt', 'output_directory')
Beispiel für die Methode extractall()
import zipfile
# 打开ZIP文件
with zipfile.ZipFile('example.zip', 'r') as zip_file:
# 解压所有文件到指定目录
zip_file.extractall('output_directory')
Beispiel
ZIP-Datei erstellen, entpacken und lesen
import zipfile
# 创建压缩文件并写入文件
for i in range(1, 5):
file = zipfile.ZipFile(f'{
i}.zip', mode='w', compression=zipfile.ZIP_DEFLATED)
file.write('test.txt')
file.close()
# 读取文件内容
for i in range(1, 5):
read_file = zipfile.ZipFile(f'{
i}.zip')
print(read_file.read('test.txt'))
# 解压文件指定文件
file = zipfile.ZipFile('1.zip')
# 第一个参数有是要解压的文件 第二个参数是指定解压文件存放的目录 如果没有该目录会自动创建
file.extract('test.txt', 'yass')
# 解压所有文件
file = zipfile.ZipFile('1.zip')
file.extractall('yass')
Zip entpacken, neue Datei schreiben und Komprimierung neu schreiben
import zipfile
import os
# 读取文件
file = zipfile.ZipFile('chat-gpt-website-master.zip')
file.extractall('yyds')
file.close()
def zip_directory(root_dir, zip_file):
for root, dirs, files in os.walk(root_dir):
# root 表示当前正在访问的文件夹路径
# dirs 表示该文件夹下的子目录名list
# files 表示该文件夹下的文件list
for file in files:
file_path = os.path.join(root, file)
print(file_path)
# arcname将文件写入指定目录 目录+文件名
zip_file.write(file_path, arcname='chat-gpt-website-master/'+os.path.relpath(file_path, root_dir))
zip_file.write('test.md', arcname='chat-gpt-website-master/test.md')
with zipfile.ZipFile('file.zip', 'w') as zip_file:
# 压缩指定目录及其嵌套文件
zip_directory('yyds/chat-gpt-website-master', zip_file)