Python

Gebruik python om een ​​bestand en map te zippen

Gebruik python om een ​​bestand en map te zippen
Een gecomprimeerd bestand bevat veel bestanden, mappen en submappen. Er zijn veel toepassingen beschikbaar om een ​​gecomprimeerd bestand van een groot bestand of elke map te maken en bestanden of mappen op te halen door een gecomprimeerd bestand uit te pakken. Als we een grote map of map via internet willen overbrengen, is het beter om de inhoud te comprimeren voordat u deze overzet. Dit maakt de taak sneller. U kunt python-scripts gebruiken voor het comprimeren en extraheren van grote bestanden of mappen. Zip bestand module van python wordt gebruikt om de taak uit te voeren. Hoe u python3 kunt gebruiken om een ​​bestand of map te comprimeren, wordt in deze zelfstudie getoond aan de hand van verschillende voorbeelden.

Voorbeeld-1: Een enkel bestand comprimeren

Maak een nieuw bestand met de naam 'postcode1.py' en voeg de volgende code toe:. Zip bestand module wordt geïmporteerd om het bestand te comprimeren. temp.zip wordt toegewezen als zip-bestandsnaam met schrijfmodus en vervolgens de originele bestandsnaam, temp.tekst en compressietype worden gegeven als parameters in de schrijfmethode.

zipbestand importeren
zip_file = zipbestand.ZipFile('temp.zip', 'w')
Zip bestand.schrijven('temp.txt', compress_type=zipbestand.ZIP_DEFLATED)
Zip bestand.dichtbij()

Voer het script uit

$ python3 postcode1.py

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

Voorbeeld-2: Een bepaalde map comprimeren

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

# importeer vereiste modules
 
importeer os
zipbestand importeren
 
 
# Declareer de functie om alle bestandspaden van de specifieke map terug te geven
def retrieve_file_paths(dirName):
 
# setup bestandspaden variabele
bestandspaden = []
 
# Lees alle directory's, subdirectories en bestandslijsten
voor root, mappen, bestanden in os.lopen (dirName):
voor bestandsnaam in bestanden:
# Maak het volledige bestandspad met behulp van de os-module.
filePath = os.pad.join(root, bestandsnaam)
bestandspaden.toevoegen(bestandspad)
 
# geef alle paden terug
return filePaths
 
 
# Verklaar de hoofdfunctie
def hoofd():
# Wijs de naam van de map toe aan zip
dir_name = 'mijnmap'
 
# Roep de functie op om alle bestanden en mappen van de toegewezen map op te halen
filePaths = retrieve_file_paths(dir_name)
 
# afdrukken van de lijst met alle bestanden die moeten worden gecomprimeerd
print('De volgende lijst met bestanden wordt gezipt:')
voor bestandsnaam in bestandspaden:
print(bestandsnaam)
 
# bestanden schrijven naar een zipbestand
zip_file = zipbestand.ZipFile(dir_name+'.zip', 'w')
met zip_file:
# elk bestand één voor één schrijven
voor bestand in filePaths:
Zip bestand.schrijven (bestand)
 
print(dir_name+'.zip-bestand is succesvol aangemaakt!')
 
# Roep de hoofdfunctie op
if __name__ == "__main__":
hoofd()

Voer het script uit

$ python3 postcode2.py

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

Voorbeeld-3: Een map comprimeren die wordt gegeven door een opdrachtregelargument

Maak een nieuw bestand met de naam 'postcode3.py' en voeg de volgende code toe:. Om de opdrachtregelwaarde te lezen, een andere python-module sys wordt geïmporteerd met os en Zip bestand modules.

# importeer vereiste modules
 
importeer os
import systeem
zipbestand importeren
 
# Declareer de functie om alle bestandspaden van een bepaalde map terug te geven
def retrieve_file_paths(dirName):
 
# setup bestandspaden variabele
bestandspaden = []
 
# Lees alle directory's, subdirectories en bestandslijsten
voor root, mappen, bestanden in os.lopen (dirName):
voor bestandsnaam in bestanden:
# Maak het volledige bestandspad met behulp van de os-module.
filePath = os.pad.join(root, bestandsnaam)
bestandspaden.toevoegen(bestandspad)
 
# geef alle paden terug
return filePaths
 
 
# Verklaar de hoofdfunctie
def hoofd():
 
# Controleer of er twee argumenten zijn gegeven op het moment dat het script wordt uitgevoerd
als len (sys.argv) != 2 :
print ("U heeft de naam van de te zippen map ingevoerd")
sys.uitgang (1)
 
# Stel de mapnaam in vanuit het opdrachtargument
dir_name = sys.argv[1]
 
# Stel de naam van het zipbestand in
zipFileName = dir_name + ".zip"
 
# Roep de functie op om alle bestanden en mappen van de toegewezen map op te halen
filePaths = retrieve_file_paths(dir_name)
 
# print de lijst met bestanden die moeten worden gecomprimeerd
print('De volgende lijst met bestanden wordt gezipt:')
voor bestandsnaam in bestandspaden:
print(bestandsnaam)
 
# schrijf bestanden en mappen naar een zipbestand
zip_file = zipbestand.ZipFile(zipFileName, 'w')
met zip_file:
# schrijf elk bestand apart
voor bestand in filePaths:
Zip bestand.schrijven (bestand)
 
print(zipFileName+'-bestand is succesvol aangemaakt!')
 
# Roep de hoofdfunctie op
if __name__ == "__main__":
hoofd()

Voer het script uit

$ python3 postcode3.py

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

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

AppyMouse trackpad en muisaanwijzer op het scherm voor Windows-tablets
Tabletgebruikers missen vaak de muisaanwijzer, vooral wanneer ze gewend zijn om de laptop te gebruiken. Het touchscreen Smartphones en tablets hebben ...
Middelste muisknop werkt niet in Windows 10
De middelste muis knop helpt u door lange webpagina's en schermen met veel gegevens te bladeren. Als dat stopt, zul je uiteindelijk het toetsenbord ge...
Hoe de linker- en rechtermuisknop op Windows 10 pc te veranderen
Het is nogal een norm dat alle computermuisapparaten ergonomisch zijn ontworpen voor rechtshandige gebruikers. Maar er zijn muisapparaten beschikbaar ...