Gebruik python om een bestand en een directory te zippen

Een gecomprimeerd bestand bevat veel bestanden, mappen en subdirectories. Er zijn veel toepassingen beschikbaar om een gecomprimeerd bestand van een groot bestand of een map te maken en bestanden of mappen op te halen door een gecomprimeerd bestand uit te pakken. Wanneer we een groot bestand of een map over het Internet willen overbrengen, is het beter om de inhoud te comprimeren alvorens over te brengen. Dit maakt de taak sneller. Je kunt python scripts gebruiken voor het comprimeren en uitpakken van grote bestanden of mappen. De zipfile module van python wordt gebruikt om deze taak uit te voeren. Hoe u python3 kunt gebruiken om een bestand of map te comprimeren, wordt in deze tutorial getoond aan de hand van verschillende voorbeelden.

Maak een nieuw bestand met de naam ‘zipcode1.py’ en voeg de volgende code toe. zipfile module is geïmporteerd om het bestand te comprimeren. temp.zip is toegewezen als zip bestandsnaam met schrijfmodus en vervolgens zijn de oorspronkelijke bestandsnaam, temp.txt en compress type gegeven als parameters in de schrijfmethode.

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

Het script uitvoeren

$ python3 zipcode1.py

De grootte van temp.txt is 27 bytes en na compressie is de grootte van temp.zip 2 bytes.

Exemplaar-2: Een bepaalde directory comprimeren

Maak een nieuw bestand aan met de naam ‘zipcode2.py’ en voeg de volgende code toe. Een directory kan veel bestanden, mappen en submappen bevatten. Om de inhoud van de directory te lezen, wordt os module van python geïmporteerd met zipfile module om de directory te comprimeren. In dit script wordt de map mydir gebruikt voor de compressie.

# importeer de vereiste modules
import os
import zipfile
# Declareer de functie om alle bestandspaden van de bepaalde map terug te geven
defrieve_file_paths(dirName):
# stel bestandspaden variabele in
filePaths =
# lees alle directory’s, submappen en bestandslijsten
voor root, directory’s, bestanden in os.walk(dirName):
for filename in files:
# Maak het volledige bestandspad met behulp van os module.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# geef alle paden terug
return filePaths
# Declareer de hoofdfunctie
def main():
# Wijs de naam van de te zippen directory toe
dir_name = ‘mydir’
# Roep de functie op om alle bestanden en mappen van de toegewezen directory op te halen
filePaths = retrieve_file_paths(dir_name)
# druk de lijst van alle te zippen bestanden af
print(‘De volgende lijst met bestanden zal worden gezipt:’)
for fileName in filePaths:
print(fileName)
# bestanden naar een zipfile schrijven
zip_file = zipfile.ZipFile(dir_name+’.zip’, ‘w’)
met zip_file:
# elk bestand één voor één schrijven
for file in filePaths:
zip_file.write(file)
print(dir_name+’.zip-bestand is succesvol aangemaakt!’)
# Roep de hoofdfunctie op
if __name__ == “__main__”:
main()

Herhaal het script

$ python3 zipcode2.py

De grootte van mydir is 21 bytes en na compressie is de grootte van mydir.zip 2 bytes.

Exemplaar-3: comprimeren van een directory gegeven door een commandoregelargument

Maak een nieuw bestand aan met de naam ‘zipcode3.py’ en voeg de volgende code toe. Om de commandoregelwaarde te lezen, wordt een andere python-module sys geïmporteerd met de modules os en zipfile.

# importeer vereiste modules
import os
import sys
import zipfile
# Declareer de functie om alle bestandspaden van een bepaalde directory terug te geven
def retrieve_file_paths(dirName):
# stel bestandspaden variabele in
filePaths =
# lees alle directory’s, submappen en bestandslijsten
voor root, directory’s, bestanden in os.walk(dirName):
for filename in files:
# Maak het volledige bestandspad met behulp van os module.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# geef alle paden terug
return filePaths
# Declareer de hoofdfunctie
def main():
# Controleer of er twee argumenten zijn gegeven op het moment dat het script wordt uitgevoerd
if len (sys.argv) != 2 :
print (“U heeft de naam van de directory om te zippen ingevoerd”)
sys.exit (1)
# Stel de naam van de directory in van het commando-argument
dir_name = sys.argv
# Stel de zip-bestandsnaam in
zipFileName = dir_name + “.zip”
# Roep de functie op om alle bestanden en mappen van de toegewezen directory op te halen
filePaths = retrieve_file_paths(dir_name)
# Druk de lijst met te zippen bestanden af
print(‘De volgende lijst met bestanden zal worden gezipt:’)
for fileName in filePaths:
print(fileName)
# Schrijf bestanden en mappen naar een zipfile
zip_file = zipfile.ZipFile(zipFileName, ‘w’)
met zip_file:
# schrijf elk bestand apart
for file in filePaths:
zip_file.write(file)
print(zipFileName+’ bestand is succesvol aangemaakt!’)
# Roep de hoofdfunctie op
if __name__ == “__main__”:
main()

Herhaal het script

$ python3 zipcode3.py

test wordt als mapnaam in het opdrachtregelargument opgegeven. De grootte van test is 21 bytes en na compressie is de grootte van test.zip 2 bytes.

Ik hoop dat deze tutorial je zal helpen om python te gebruiken voor het comprimeren van een bestand of map.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.