Pytonorm

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

Använd python för att zip en fil och katalog
En komprimerad fil innehåller många filer, kataloger och underkataloger. Många applikationer är tillgängliga för att skapa en komprimeringsfil av alla stora filer eller kataloger och hämta filer eller mappar genom att extrahera en komprimerad fil. När vi vill överföra en stor eller mapp över Internet är det bättre att komprimera innehållet innan du överför det. Detta gör uppgiften snabbare. Du kan använda python-skript för att komprimera och extrahera alla stora filer eller kataloger. Zip fil modul av python används för att utföra uppgiften. Hur du kan använda python3 för att komprimera vilken fil eller katalog som helst visas i denna handledning med hjälp av olika exempel.

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 zipfil
zip_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.py

Storleken 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 moduler
 
importera 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.py

Storleken 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 moduler
 
importera 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.py

testa 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.

5 bästa arkadspel för Linux
Numera är datorer seriösa maskiner som används för spel. Om du inte kan få den nya poängen vet du vad jag menar. I det här inlägget kommer du att känn...
Strid om Wesnoth 1.13.6 Utveckling släppt
Strid om Wesnoth 1.13.6 släpptes förra månaden, är den sjätte utvecklingsversionen i 1.13.x-serien och den levererar ett antal förbättringar, framför ...
Så här installerar du League Of Legends på Ubuntu 14.04
Om du gillar League of Legends är det här en möjlighet för dig att testa League of Legends. Observera att LOL stöds på PlayOnLinux om du är en Linux-a...