Bruk Python for å zip en fil og katalog

Bruk Python for å zip en fil og katalog
En komprimert fil inneholder mange filer, katalog og underkataloger. Mange applikasjoner er tilgjengelige for å opprette en komprimeringsfil med en hvilken som helst stor fil eller katalog og hente filer eller mapper ved å trekke ut en komprimert fil. Når vi ønsker å overføre en stor eller mappe over internett, er det bedre å komprimere innholdet før du overfører. Dette gjør oppgaven raskere. Du kan bruke Python -skript for å komprimere og trekke ut en hvilken som helst stor fil eller katalog. Zipfile Modul av Python brukes til å gjøre oppgaven. Hvordan du kan bruke Python3 til å komprimere hvilken som helst fil eller katalog vises i denne opplæringen ved å bruke forskjellige eksempler.

Eksempel 1: Komprimering av en enkelt fil

Lage en ny fil som heter 'Zipcode1.py ' og legg til følgende kode. Zipfile Modulen importeres for å komprimere filen. temp.glidelås tildeles som zip -filnavn med skrivemodus og neste, det originale filnavnet, temp.tekst og komprimeringstypen er gitt som parametere i skrivemetoden.

Importer zipfile
ZIP_FILE = ZIPFILE.Zipfile ('Temp.Zip ',' W ')
ZIP_FILE.Skriv ('Temp.txt ', compress_type = zipfile.ZIP_DEFLATED)
ZIP_FILE.Lukk()

Kjør manuset

$ Python3 Zipcode1.py

Størrelsen til temp.tekst er 27 byte og etter komprimering, størrelsen på temp.glidelås er 2 byte.

Eksempel-2: Komprimering av en bestemt katalog

Lage en ny fil som heter 'Zipcode2.py ' og legg til følgende kode. En katalog kan inneholder mange filer, mapper og undermapper. Å lese innholdet i katalogen, OS Modul av Python importeres med Zipfile modul for å komprimere katalogen. I dette skriptet, mydir Katalog brukes til komprimering.

# Import påkrevde moduler
Importer OS
Importer zipfile
# Erklære funksjonen for å returnere alle filstier i den aktuelle katalogen
def henting_file_paths (dirname):
# Oppsett filbaner Variabel
filepaths = []
# Les alle katalog, underkataloger og fillister
for rot, kataloger, filer i OS.walk (dirname):
For filnavn i filer:
# Opprett hele filpathen ved å bruke OS -modulen.
filepath = OS.sti.Bli med (rot, filnavn)
filepater.vedlegg (filepat)
# Returner alle stier
Returner filepater
# Erklære hovedfunksjonen
def main ():
# Tildel navnet på katalogen til ZIP
dir_name = 'mydir'
# Ring funksjonen for å hente alle filer og mapper i den tildelte katalogen
filepaths = henting_file_paths (dir_name)
# Skrive ut listen over alle filer som skal glidelås
Skriv ut ('Følgende liste over filer blir glidelås:')
for filnavn i filepater:
trykk (filnavn)
# skrive filer til en zipfile
ZIP_FILE = ZIPFILE.ZipFile (DIR_NAME+'.Zip ',' W ')
med zip_file:
# Skrive hver fil en etter en
for fil i filepater:
ZIP_FILE.Skriv (fil)
print (dir_name+'.ZIP -fil opprettes vellykket!')
# Ring hovedfunksjonen
if __name__ == "__main__":
hoved()

Kjør manuset

$ Python3 ZipCode2.py

Størrelsen til mydir er 21 byte og etter komprimering, størrelsen på mydir.glidelås er 2 byte.

Eksempel-3: Komprimering av en katalog gitt av kommandolinjeargumentet

Lage en ny fil som heter 'Zipcode3.py ' og legg til følgende kode. For å lese kommandolinjeverdien, en annen Python -modul sys importeres med OS og Zipfile moduler.

# Import påkrevde moduler
Importer OS
Importer Sys
Importer zipfile
# Erklære funksjonen for å returnere alle filstier i en bestemt katalog
def henting_file_paths (dirname):
# Oppsett filbaner Variabel
filepaths = []
# Les alle katalog, underkataloger og fillister
for rot, kataloger, filer i OS.walk (dirname):
For filnavn i filer:
# Opprett hele filpathen ved å bruke OS -modulen.
filepath = OS.sti.Bli med (rot, filnavn)
filepater.vedlegg (filepat)
# Returner alle stier
Returner filepater
# Erklære hovedfunksjonen
def main ():
# Sjekk to argumenter er gitt på tidspunktet for å kjøre skriptet
Hvis Len (SYS.argv) != 2:
trykk ("Du har skriv inn navnet på katalogen til Zip")
sys.Avslutt (1)
# Angi katalognavnet fra kommandoargument
dir_name = sys.Argv [1]
# Angi zip -filnavnet
ZipFileName = Dir_name + ".glidelås"
# Ring funksjonen for å hente alle filer og mapper i den tildelte katalogen
filepaths = henting_file_paths (dir_name)
# Skriv ut listen over filer som skal glidelås
Skriv ut ('Følgende liste over filer blir glidelås:')
for filnavn i filepater:
trykk (filnavn)
# Skriv filer og mapper til en Zipfile
ZIP_FILE = ZIPFILE.Zipfile (Zipfilename, 'W')
med zip_file:
# Skriv hver fil separat
for fil i filepater:
ZIP_FILE.Skriv (fil)
PRINT (ZipFileName+'-filen opprettes vellykket!')
# Ring hovedfunksjonen
if __name__ == "__main__":
hoved()

Kjør manuset

$ Python3 ZipCode3.py

test er gitt som katalognavn i kommandolinjeargumentet. Størrelsen til test er 21 byte og etter komprimering, størrelsen på test.glidelås er 2 byte.

Jeg håper, denne opplæringen vil hjelpe deg å bruke Python til å komprimere en hvilken som helst fil eller katalog.