Exempel 1: Komprimera en enda fil
Skapa en ny fil med namnet 'postnummer1.py ' och lägg till följande kod. Zip fil modulen importeras för att komprimera filen. temp.blixtlås tilldelas som zip-filnamn med skrivläge och därefter det ursprungliga filnamnet, temp.Text och komprimeringstyp ges som parametrar i skrivmetoden.
importera zipfilzip_file = zipfile.ZipFile ('temp.zip ',' w ')
Zip fil.skriv ('temp.txt ', compress_type = zipfile.ZIP_DEFLATED)
Zip fil.stänga()
Kör manuset
$ python3 postnummer1.pyStorleken av temp.Text är 27 byte och efter komprimering, storleken på temp.blixtlås är 2 byte.
Exempel 2: Komprimera en viss katalog
Skapa en ny fil med namnet 'postnummer2.py ' och lägg till följande kod. En katalog kan innehålla många filer, mappar och undermappar. Att läsa innehållet i katalogen, os modul av python importeras med Zip fil modul för att komprimera katalogen. I detta skript, mydir katalog används för komprimering.
# importera nödvändiga modulerimportera os
importera zipfil
# Förklara funktionen för att returnera alla filvägar för den specifika katalogen
def retrieve_file_paths (dirName):
# setup filvägar variabel
filePaths = []
# Läs alla kataloger, underkataloger och fillistor
för root, kataloger, filer i os.promenad (dirName):
för filnamn i filer:
# Skapa hela filvägen med hjälp av os-modulen.
filePath = os.väg.gå med (root, filnamn)
filePaths.append (filePath)
# returnera alla vägar
returnera FilePaths
# Förklara huvudfunktionen
def huvud ():
# Tilldela namnet på katalogen som ska zipas
dir_name = 'mydir'
# Ring funktionen för att hämta alla filer och mappar i den tilldelade katalogen
filePaths = retrieve_file_paths (dir_name)
# skriver ut listan över alla filer som ska zippas
print ('Följande lista över filer kommer att bli zippad:')
för fileName i filePaths:
skriva ut (filnamn)
# att skriva filer till en zipfil
zip_file = zipfile.ZipFile (dir_name + '.zip ',' w ')
med zip_file:
# att skriva varje fil en efter en
för fil i filePaths:
Zip fil.skriv (fil)
skriv ut (dir_name + '.zip-filen har skapats!')
# Ring huvudfunktionen
om __name__ == "__main__":
huvud ()
Kör manuset
$ python3 postnummer2.pyStorleken av mydir är 21 byte och efter komprimering, storleken på mydir.blixtlås är 2 byte.
Exempel 3: Komprimera en katalog som ges av kommandoradsargumentet
Skapa en ny fil med namnet 'postnummer3.py ' och lägg till följande kod. För att läsa kommandoradsvärdet, en annan pythonmodul sys importeras med os och Zip fil moduler.
# importera nödvändiga modulerimportera os
importera sys
importera zipfil
# Förklara funktionen för att returnera alla filvägar för en viss katalog
def retrieve_file_paths (dirName):
# setup filvägar variabel
filePaths = []
# Läs alla kataloger, underkataloger och fillistor
för root, kataloger, filer i os.promenad (dirName):
för filnamn i filer:
# Skapa hela filvägen med hjälp av os-modulen.
filePath = os.väg.gå med (root, filnamn)
filePaths.append (filePath)
# returnera alla vägar
returnera FilePaths
# Förklara huvudfunktionen
def huvud ():
# Kontrollera att två argument ges när skriptet körs
om len (sys.argv) != 2:
skriv ut ("Du måste ange namnet på katalogen som ska zip")
sys.utgång (1)
# Ställ in katalognamnet från kommandoargumentet
dir_name = sys.argv [1]
# Ställ in zip-filnamnet
zipFileName = dir_name + ".blixtlås"
# Ring funktionen för att hämta alla filer och mappar i den tilldelade katalogen
filePaths = retrieve_file_paths (dir_name)
# skriv ut listan över filer som ska zippas
print ('Följande lista över filer kommer att bli zippad:')
för fileName i filePaths:
skriva ut (filnamn)
# skriv filer och mappar till en zipfil
zip_file = zipfile.ZipFile (zipFileName, 'w')
med zip_file:
# skriv varje fil separat
för fil i filePaths:
Zip fil.skriv (fil)
print (zipFileName + '-fil har skapats!')
# Ring huvudfunktionen
om __name__ == "__main__":
huvud ()
Kör manuset
$ python3 postnummer3.pytesta ges som katalognamn i kommandoradsargumentet. Storleken av testa är 21 byte och efter komprimering, storleken på testa.blixtlås är 2 byte.
Jag hoppas att den här guiden hjälper dig att använda python för att komprimera valfri fil eller katalog.