Verwenden Sie Python, um eine Datei und ein Verzeichnis zu komprimieren

Eine komprimierte Datei enthält viele Dateien, Verzeichnisse und Unterverzeichnisse. Es gibt viele Anwendungen, um eine komprimierte Datei von einer großen Datei oder einem großen Verzeichnis zu erstellen und Dateien oder Verzeichnisse durch Extrahieren einer komprimierten Datei wiederherzustellen. Wenn wir eine große Datei oder einen Ordner über das Internet übertragen wollen, ist es besser, den Inhalt vor der Übertragung zu komprimieren. Das macht die Aufgabe schneller. Sie können Python-Skripte zum Komprimieren und Extrahieren großer Dateien oder Verzeichnisse verwenden. Das zipfile-Modul von Python wird für diese Aufgabe verwendet. Wie man mit Python3 eine Datei oder ein Verzeichnis komprimieren kann, wird in diesem Tutorial anhand verschiedener Beispiele gezeigt.

Erstelle eine neue Datei mit dem Namen ‘zipcode1.py’ und füge den folgenden Code ein. Das zipfile-Modul wird importiert, um die Datei zu komprimieren. temp.zip wird als Zip-Dateiname mit Schreibmodus zugewiesen und als nächstes werden der ursprüngliche Dateiname, temp.txt und der Komprimierungstyp als Parameter in der Schreibmethode angegeben.

import zipfile
zip_file = zipfile.ZipFile(‘temp.zip’, ‘w’)
zip_file.write(‘temp.txt’, compress_type=zipfile.ZIP_DEFLATED)
zip_file.close()

Skript ausführen

$ python3 zipcode1.py

Die Größe von temp.txt beträgt 27 Byte und nach der Komprimierung beträgt die Größe von temp.zip 2 Byte.

Beispiel-2: Komprimieren eines bestimmten Verzeichnisses

Erstellen Sie eine neue Datei mit dem Namen “zipcode2.py” und fügen Sie den folgenden Code hinzu. Ein Verzeichnis kann viele Dateien, Verzeichnisse und Unterverzeichnisse enthalten. Um den Inhalt des Verzeichnisses zu lesen, wird das os-Modul von Python mit dem zipfile-Modul importiert, um das Verzeichnis zu komprimieren. In diesem Skript wird das Verzeichnis mydir für die Komprimierung verwendet.

# importiere benötigte Module
importiere os
importiere zipfile
# Deklariere die Funktion, um alle Dateipfade des bestimmten Verzeichnisses zurückzugeben
def retrieve_file_paths(dirName):
# richte Dateipfade-Variable ein
filePaths =
# Lies alle Verzeichnisse, Unterverzeichnisse und Dateilisten
für root, Verzeichnisse, Dateien in os.walk(dirName):
for filename in files:
# Den vollständigen Dateipfad mit Hilfe des os-Moduls erstellen.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# Alle Pfade zurückgeben
return filePaths
# Deklariere die Hauptfunktion
def main():
# Weisen Sie den Namen des zu zippenden Verzeichnisses zu
dir_name = ‘mydir’
# Rufen Sie die Funktion auf, um alle Dateien und Ordner des zugewiesenen Verzeichnisses abzurufen
filePaths = retrieve_file_paths(dir_name)
# Drucken der Liste aller zu zippenden Dateien
print(‘Die folgende Liste von Dateien wird gezippt:’)
for fileName in filePaths:
print(fileName)
# Dateien in eine Zip-Datei schreiben
zip_file = zipfile.ZipFile(dir_name+’.zip’, ‘w’)
mit zip_file:
# jede Datei einzeln schreiben
for file in filePaths:
zip_file.write(file)
print(dir_name+’.zip-Datei wurde erfolgreich erstellt!’)
# Aufruf der main-Funktion
if __name__ == “__main__”:
main()

Ausführen des Skripts

$ python3 zipcode2.py

Die Größe von mydir beträgt 21 Byte und nach der Komprimierung beträgt die Größe von mydir.zip 2 Byte.

Beispiel-3: Komprimieren eines Verzeichnisses, das durch ein Kommandozeilenargument angegeben wird

Erstellen Sie eine neue Datei mit dem Namen ‘zipcode3.py’ und fügen Sie den folgenden Code hinzu. Um den Befehlszeilenwert zu lesen, wird ein weiteres Python-Modul sys mit den Modulen os und zipfile importiert.

# importiere benötigte Module
import os
import sys
import zipfile
# Deklariere die Funktion, um alle Dateipfade eines bestimmten Verzeichnisses zurückzugeben
def retrieve_file_paths(dirName):
# richte Dateipfade-Variable ein
filePaths =
# Lies alle Verzeichnisse, Unterverzeichnisse und Dateilisten
für root, Verzeichnisse, Dateien in os.walk(dirName):
for filename in files:
# Den vollständigen Dateipfad mit Hilfe des os-Moduls erstellen.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# Alle Pfade zurückgeben
return filePaths
# Die Hauptfunktion deklarieren
def main():
# Überprüfen, ob zwei Argumente zum Zeitpunkt der Ausführung des Skripts angegeben sind
if len (sys.argv) != 2 :
print (“Sie haben den Namen des zu zippenden Verzeichnisses eingegeben”)
sys.exit (1)
# Den Verzeichnisnamen aus dem Befehlsargument setzen
dir_name = sys.argv
# Den Zip-Dateinamen setzen
zipFileName = dir_name + “.zip”
# Rufen Sie die Funktion auf, um alle Dateien und Ordner des zugewiesenen Verzeichnisses abzurufen
filePaths = retrieve_file_paths(dir_name)
# Drucken Sie die Liste der zu zippenden Dateien
print(‘Die folgende Liste von Dateien wird gezippt:’)
for fileName in filePaths:
print(fileName)
# Schreiben Sie Dateien und Ordner in eine Zip-Datei
zip_file = zipfile.ZipFile(zipFileName, ‘w’)
mit zip_file:
# jede Datei einzeln schreiben
for file in filePaths:
zip_file.write(file)
print(zipFileName+’ Datei wurde erfolgreich erstellt!’)
# Aufruf der main-Funktion
if __name__ == “__main__”:
main()

Ausführen des Skripts

$ python3 zipcode3.py

test wird als Verzeichnisname im Kommandozeilenargument angegeben. Die Größe von test beträgt 21 Bytes und nach der Komprimierung beträgt die Größe von test.zip 2 Bytes.

Ich hoffe, dieses Tutorial wird Ihnen helfen, Python für die Komprimierung einer Datei oder eines Verzeichnisses zu verwenden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.