Använd python för att komprimera en fil och katalog

En komprimerad fil innehåller många filer, kataloger och underkataloger. Många program finns tillgängliga för att skapa en komprimerad fil av en stor fil eller katalog och hämta filer eller mappar genom att extrahera en komprimerad fil. När vi vill överföra någon stor eller mapp över Internet är det bättre att komprimera innehållet före överföringen. Detta gör uppgiften snabbare. Du kan använda pythonskript för att komprimera och extrahera en stor fil eller katalog. zipfile-modulen i python används för att utföra uppgiften. Hur du kan använda python3 för att komprimera en fil eller katalog visas i denna handledning med hjälp av olika exempel.

Skapa en ny fil med namnet “zipcode1.py” och lägg till följande kod. zipfile-modulen importeras för att komprimera filen. temp.zip tilldelas som zip-filnamn med skrivläge och därefter ges det ursprungliga filnamnet, temp.txt och komprimeringstypen som parametrar i skrivmetoden.

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

Kör skriptet

$ python3 zipcode1.py

Storleken på temp.txt är 27 bytes och efter komprimering är storleken på temp.zip 2 bytes.

Exempel-2: Komprimering av en viss katalog

Skapa en ny fil med namnet “zipcode2.py” och lägg till följande kod. En katalog kan innehålla många filer, mappar och undermappar. För att läsa innehållet i katalogen importeras pythons modul os med modulen zipfile för att komprimera katalogen. I det här skriptet används katalogen mydir för komprimering.

# importera nödvändiga moduler
importera os
importera zipfile
# Deklarera funktionen för att returnera alla filvägar för den specifika katalogen
def retrieve_file_paths(dirName):
# ställa in filvägar variabel
filePaths =
# läsa alla kataloger, underkataloger och fillistor
# för rot, kataloger, filer i os.walk(dirName):
for filename in files:
# Skapa fullständig filväg med hjälp av modulen os.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# return all paths
return filePaths
# Deklarera huvudfunktionen
def main():
# Tilldela namnet på den katalog som ska komprimeras
dir_name = ‘mydir’
# Kalla funktionen för att hämta alla filer och mappar i den tilldelade katalogen
filePaths = retrieve_file_paths(dir_name)
# Skriv ut listan över alla filer som ska komprimeras
print(‘Följande lista över filer kommer att komprimeras:’)
for fileName in filePaths:
print(fileName)
# skriva filer till en zipfil
zip_file = zipfile.ZipFile(dir_name+’.zip’, ‘w’)
med zip_file:
# skriver varje fil en efter en
for file in filePaths:
zip_file.write(file)
print(dir_name+’.zip file is created successfully!’)
# Kalla huvudfunktionen
if __name__ == “__main__”:
main()

Kör skriptet

$ python3 zipcode2.py

Storleken på mydir är 21 bytes och efter komprimering är storleken på mydir.zip 2 bytes.

Exempel-3: Komprimering av en katalog som ges av ett argument på kommandoraden

Skapa en ny fil med namnet “zipcode3.py” och lägg till följande kod. För att läsa kommandoradsvärdet importeras en annan pythonmodul sys tillsammans med modulerna os och zipfile.

# importera nödvändiga moduler
import os
import sys
import zipfile
# Deklarera funktionen för att återge alla filvägar för en viss katalog
def retrieve_file_paths(dirName):
# ställa in filvägar variabel
filePaths =
# läsa alla katalog-, underkatalog- och fillistor
för root, kataloger, filer i os.walk(dirName):
for filename in files:
# Skapa fullständig filväg med hjälp av modulen os.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# return all paths
return filePaths
# Deklarera huvudfunktionen
def main():
# Kontrollera att två argument är givna när skriptet körs
if len (sys.argv) != 2 :
print (“Du har angett namnet på katalogen som ska komprimeras”)
sys.exit (1)
# Ange katalognamnet från kommando-argument
dir_name = sys.argv
# Ange zip-filens namn
zipFileName = dir_name + “.zip”
# Kalla 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 komprimeras
print(‘Följande lista över filer kommer att komprimeras:’)
for fileName in filePaths:
print(fileName)
# Skriv filer och mappar till en zipfil
zip_file = zipfile.ZipFile(zipFileName, ‘w’)
med zip_file:
# skriver varje fil separat
for file in filePaths:
zip_file.write(file)
print(zipFileName+’ fil har skapats framgångsrikt!’)
# Kalla huvudfunktionen
if __name__ == “__main__”:
main()

Kör skriptet

$ python3 zipcode3.py

test anges som katalognamn i kommandoradsargumentet. Storleken på test är 21 bytes och efter komprimering är storleken på test.zip 2 bytes.

Jag hoppas att den här handledningen hjälper dig att använda python för att komprimera en fil eller katalog.

Lämna ett svar

Din e-postadress kommer inte publiceras.