Brug python til at komprimere en fil og en mappe

En komprimeret fil indeholder mange filer, mapper og undermapper. Der findes mange programmer til at oprette en komprimeret fil af en hvilken som helst stor fil eller mappe og hente filer eller mapper ved at udtrække en komprimeret fil. Når vi ønsker at overføre en stor eller en mappe over internettet, er det bedre at komprimere indholdet, inden det overføres. Dette gør opgaven hurtigere. Du kan bruge python-scripts til at komprimere og udtrække store filer eller mapper. zipfile-modulet i python bruges til at udføre denne opgave. Hvordan du kan bruge python3 til at komprimere enhver fil eller mappe, vises i denne vejledning ved hjælp af forskellige eksempler.

Opret en ny fil med navnet “zipcode1.py”, og tilføj følgende kode. zipfile-modulet importeres for at komprimere filen. temp.zip tildeles som zip-filnavn med skrivetilstand, og dernæst angives det oprindelige filnavn, temp.txt og komprimeringstype som parametre i skrivemetoden.

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

Kør scriptet

$ python3 zipcode1.py

Størrelsen af temp.txt er 27 bytes, og efter komprimering er størrelsen af temp.zip 2 bytes.

Eksempel-2: Komprimering af en bestemt mappe

Opret en ny fil med navnet “zipcode2.py”, og tilføj følgende kode. En mappe kan indeholde mange filer, mapper og undermapper. For at læse indholdet af mappen importeres os-modulet i python med zipfile-modulet for at komprimere mappen. I dette script bruges mappen mydir til komprimering.

# import af nødvendige moduler
import os
import zipfile
# Deklarér funktionen til at returnere alle filstier i den pågældende mappe
def retrieve_file_paths(dirName):
# opsætning af filstier variabel
filePaths =
# Læs alle mapper, undermapper og fillister
# for rod, mapper, filer i os.walk(dirName):
for filename in files:
# Opret den fulde filsti ved hjælp af os modulet.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# return all paths
return filePaths
# Declare the main function
def main():
# Tildel navnet på den mappe, der skal zipes
dir_name = ‘mydir’
# Kald funktionen for at hente alle filer og mapper i den tildelte mappe
filePaths = retrieve_file_paths(dir_name)
# Udskrivning af listen over alle de filer, der skal zipes
print(‘Følgende liste af filer vil blive zipet:’)
for fileName in filePaths:
print(fileName)
# skrivning af filer til en zipfil
zip_file = zipfile.ZipFile(dir_name+’.zip’, ‘w’)
med zip_file:
# skriver hver fil en efter en
for file in filePaths:
zip_file.write(file)
print(dir_name+’.zip-fil er oprettet med succes!’)
# Kald hovedfunktionen
if __name__ == “__main__”:
main()

Kør scriptet

$ python3 zipcode2.py

Størrelsen af mydir er 21 bytes, og efter komprimering er størrelsen af mydir.zip 2 bytes.

Eksempel-3: Komprimering af en mappe givet ved hjælp af et kommandolinjeargument

Opret en ny fil med navnet “zipcode3.py”, og tilføj følgende kode. For at læse kommandolinjeværdien importeres et andet pythonmodul sys sammen med modulerne os og zipfile.

# import af nødvendige moduler
import os
import sys
import zipfile
# Deklarér funktionen til at returnere alle filstier i en bestemt mappe
def retrieve_file_paths(dirName):
# opsætning af filstier variabel
filePaths =
# Læs alle mapper, undermapper og fillister
# for rod, mapper, filer i os.walk(dirName):
for filename in files:
# Opret den fulde filsti ved hjælp af os modulet.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# return all paths
return filePaths
# Deklarér hovedfunktionen
def main():
# Kontroller, at der er angivet to argumenter på det tidspunkt, hvor scriptet køres
if len (sys.argv) != 2 :
print (“You have enter the name of the directory to zip”)
sys.exit (1)
# Indstil mappenavnet fra kommandoargumentet
dir_name = sys.argv
# Indstil zip-filens navn
zipFileName = dir_name + “.zip”
# Kald funktionen for at hente alle filer og mapper i den tildelte mappe
filePaths = retrieve_file_paths(dir_name)
# udskriv listen over de filer, der skal zippes
print(‘Følgende liste af filer vil blive zippet:’)
for fileName in filePaths:
print(fileName)
# skriv filer og mapper til en zipfil
zip_file = zipfile.ZipFile(zipFileName, ‘w’)
med zip_file:
# skriv hver fil for sig
for file in filePaths:
zip_file.write(file)
print(zipFileName+’ fil er oprettet med succes!’)
# Kald hovedfunktionen
if __name__ == “__main__”:
main()

Kør scriptet

$ python3 zipcode3.py

test er angivet som mappenavn i kommandolinjeargumentet. Størrelsen af test er 21 bytes, og efter komprimering er størrelsen af test.zip 2 bytes.

Jeg håber, at denne vejledning vil hjælpe dig med at bruge python til at komprimere enhver fil eller mappe.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.