Eksempel 1: Komprimere en enkelt fil
Opprett en ny fil med navnet 'postnummer1.py ' og legg til følgende kode. zipfil modulen importeres for å komprimere filen. temp.glidelås er tildelt som zip-filnavn med skrivemodus og neste, det opprinnelige filnavnet, temp.tekst og komprimeringstype er gitt som parametere i skrivemetoden.
importer zip-filzip_file = zipfile.ZipFile ('temp.zip ',' w ')
zip_file.skriv ('temp.txt ', compress_type = zipfile.ZIP_DEFLATED)
zip_file.Lukk()
Kjør skriptet
$ python3 postnummer1.pyStørrelsen til temp.tekst er 27 byte og etter komprimering, størrelsen på temp.glidelås er 2 byte.
Eksempel 2: Komprimere en bestemt katalog
Opprett en ny fil med navnet 'postnummer2.py ' og legg til følgende kode. En katalog kan inneholde mange filer, mapper og undermapper. For å lese innholdet i katalogen, os modul av python importeres med zipfil modul for å komprimere katalogen. I dette skriptet, mydir katalog brukes for komprimering.
# importer nødvendige modulerimporter os
importer zip-fil
# Erklær funksjonen for å returnere alle filstier i den aktuelle katalogen
def retrieve_file_paths (dirName):
# oppsett filstier variabel
filePaths = []
# Les alle kataloger, underkataloger og fillister
for root, kataloger, filer i os.gå (dirName):
for filnavn i filer:
# Opprett hele filveien ved hjelp av os-modulen.
filePath = os.sti.bli med (rot, filnavn)
filePaths.legge til (filePath)
# returner alle stier
return filePaths
# Erklær hovedfunksjonen
def main ():
# Tilordne navnet på katalogen som skal zipes
dir_name = 'mydir'
# Ring funksjonen for å hente alle filer og mapper i den tildelte katalogen
filePaths = retrieve_file_paths (dir_name)
# skriver ut listen over alle filene som skal zippes
print ('Følgende liste over filer vil bli zippet:')
for filnavn i filstier:
skriv ut (filnavn)
# skriver filer til en zip-fil
zip_file = zipfile.ZipFile (dir_name + '.zip ',' w ')
med zip_file:
# skriver hver fil en etter en
for fil i filePaths:
zip_file.skriv (fil)
skriv ut (dir_name + '.zip-filen er opprettet!')
# Ring hovedfunksjonen
hvis __name__ == "__main__":
hoved()
Kjør skriptet
$ python3 postnummer2.pyStørrelsen til mydir er 21 byte og etter komprimering, størrelsen på mydir.glidelås er 2 byte.
Eksempel 3: Komprimere en katalog gitt av kommandolinjeargumentet
Opprett en ny fil med navnet 'postnummer3.py ' og legg til følgende kode. For å lese kommandolinjeverdien, en annen python-modul sys importeres med os og zipfil moduler.
# importer nødvendige modulerimporter os
importer sys
importer zip-fil
# Erklær funksjonen for å returnere alle filstier i en bestemt katalog
def retrieve_file_paths (dirName):
# oppsett filstier variabel
filePaths = []
# Les alle kataloger, underkataloger og fillister
for root, kataloger, filer i os.gå (dirName):
for filnavn i filer:
# Opprett hele filveien ved hjelp av os-modulen.
filePath = os.sti.bli med (rot, filnavn)
filePaths.legge til (filePath)
# returner alle stier
return filePaths
# Erklær hovedfunksjonen
def main ():
# Kontroller at to argumenter gis når skriptet kjøres
hvis len (sys.argv) != 2:
skriv ut ("Du har angitt navnet på katalogen som skal zip")
sys.utgang (1)
# Angi katalognavnet fra kommandoargumentet
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 = retrieve_file_paths (dir_name)
# skriv ut listen over filer som skal zippes
skriv ut ('Følgende liste over filer vil bli zippet:')
for filnavn i filstier:
skriv ut (filnavn)
# skriv filer og mapper til en zip-fil
zip_file = zipfile.ZipFile (zipFileName, 'w')
med zip_file:
# skriv hver fil separat
for fil i filePaths:
zip_file.skriv (fil)
print (zipFileName + '-fil er opprettet!')
# Ring hovedfunksjonen
hvis __name__ == "__main__":
hoved()
Kjør skriptet
$ python3 postnummer3.pytest 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 hvilken som helst fil eller katalog.