Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Zipovanie je elegantný spôsob kompresie niekoľkých súborov a ich skombinovania do jedného. To šetrí nielen úložný priestor, ale aj šírku pásma pri prenose súboru cez sieť. Jednou z najlepších vlastností zipsu je, že funguje na všetkých hlavných platformách: Windows, Linux a Mac.

Zip používa bezstratovú kompresiu, aby pri komprimácii a rozbalení zachoval všetky údaje. Môžete tiež šifrovať a dešifrovať súbory zip.

S toľkými funkciami na preskúmanie zistite, ako môžete čítať, komprimovať a rozbaľovať súbory pomocou modulu zipfile Python.

Čo je to modul zipfile?

Na manipuláciu so súbormi zip pomocou Pythonu môžete použiť štandardný modul zipfile. Pomocou tohto modulu môžete otvárať a čítať súbory zip, čítať ich metadáta, vytvárať súbor zip, komprimovať ho a rozbaľovať súbory. K dispozícii sú tri spôsoby kompresie: Deflate, Bzip2 a LZMA.

Jednou z vecí, ktoré modulu chýbajú, je schopnosť pracovať so súbormi na viacerých diskoch, ale zvláda rozšírenie ZIP64. Môže tiež dešifrovať archívy zip, ale nie ich šifrovať. Pomocou modulu zipfile môžete získať metadáta súboru zip, ako je dátum a čas úpravy. Môžete tiež načítať podrobnosti, ako je operačný systém použitý na vytvorenie súboru, verzia zip a veľkosť súboru v komprimovanom aj nekomprimovanom formáte.

instagram viewer

Ako komprimovať súbory pomocou Pythonu

Pomocou modulu zipfile v Pythone môžete zipsovať viacero súborov do jedného archívu. Importovať ZipFile modul z zipfile balík na vykonanie požadovaných operácií zip. Tiež import na os modul na výber a uloženie súborov.

Definujte funkciu get_all_file_paths(). Mal by akceptovať parameter adresára, ktorý obsahuje cestu k priečinku obsahujúcemu súbory na zips.

Inicializujte prázdny zoznam, v ktorom bude uložený zoznam ciest k súborom. Použite cyklus for na získanie úplného obsahu cieľového adresára pomocou súboru os.walk() funkciu. Táto funkcia načítava názvy súborov v adresárovom strome pohybom po ňom zhora nadol alebo zdola nahor. Pre každý adresár funkcia vráti trojicu obsahujúcu root, adresáre a súbory.

Koreň je reťazec, ktorý obsahuje úplnú cestu k adresáru. Zoznam dirs obsahuje všetky podadresáre obsiahnuté v adresári. Zoznam súborov obsahuje všetky súbory nachádzajúce sa v adresári.

Vo vnútri slučky vyhláste ďalšiu slučku na iteráciu zoznamu súborov. Použi os.path.join() funkcia na spojenie názvu adresára s každým súborom, aby sa vytvorila úplná cesta. Potom pripojte tento úplný názov súboru do zoznamu, ktorý ste vytvorili predtým. Po dokončení tejto operácie vráťte zoznam ciest k súborom.

# importujte požadované moduly
od zipfile importovať ZipFile
importovať os

# vytvorte funkciu na získanie všetkých ciest k súborom
defget_all_file_paths(adresár):
# inicializuje sa prázdny zoznam na ukladanie ciest k súborom
cesty k súborom = []

# prechádzať súbormi
prekoreň, adresárov, súboryvos.chodiť(adresár):
pre názov súboru v súboroch:
# pripojte koreňový adresár a názov súboru a vytvorte úplnú cestu k súboru
cesta k súboru = os.path.join (koreň, názov súboru)
cesty k súborom.priložiť(cesta k súboru)

# vracia všetky cesty k súborom
vrátiť cesty k súborom

Uložte cestu k priečinku, ktorý obsahuje súbory, ktoré chcete komprimovať do premennej s názvom adresár. Zavolajte funkciu, get_all_file_paths() ktoré ste vytvorili skôr a uložte hodnotu, ktorú vracia cesty k súborom.

Zobrazte používateľovi správu, aby vedel, že toto sú súbory, ktoré program zazipuje. Iterujte cez súbory a zobrazte ich názvy.

Zadajte názov, ktorý chcete, aby mal váš zip súbor, spolu so špecifikáciou, že program vráti zapisovateľný súbor pomocou príkazu with na spracovanie výnimiek. Iterujte každý súbor a použite funkciu write() cez zapisovateľný súbor do súboru zip.

Po dokončení operácie vypíšte správu s vysvetlením, že program úspešne zazipoval všetky súbory.

# cesta k priečinku, ktorý chcete skomprimovať
adresár = './pythonzip'

# volanie funkcie na získanie všetkých ciest k súborom v adresári
file_paths = get_all_file_paths (adresár)

# tlač zoznamu všetkých súborov, ktoré chcete komprimovať
vytlačiť('Zoznam súborov, ktoré budú komprimované:')

pre file_name v file_paths:
vytlačiť(názov súboru)

# zápis súborov do súboru zip
s ZipFile('môj_súbor.zip', 'w') ako PSČ:
# napíšte každý súbor jeden po druhom
pre súbor v file_paths:
PSČ.písať(súbor)

vytlačiť('Všetky súbory sú zazipované!')

Ako rozbaliť súbory pomocou Pythonu

Implementácia rozbaľovania súborov pomocou modulu zipfile je oveľa jednoduchšia. Importovať zipfile balík z ZipFile modul a uložte názov súboru zip, ktorý chcete extrahovať, do premennej. Na spracovanie výnimiek a otvorenie súboru, ktorý chcete extrahovať, použite príkaz with v režime čítania. Použi printdir() funkcia na zobrazenie obsahu súborov prítomných v zip.

Zobrazte správu o priebehu, že extrahujete súbory a použite extrahovať všetko() funkcia na extrahovanie obsahu súboru zip do aktuálneho pracovného adresára. Prípadne môžete zahrnúť parameter cesty na zmenu cesty, kam program extrahuje súbory.

Zobrazte správu pomocou vytlačiť vyhlásenie o ukončení operácie.

# importovanie požadovaných modulov
od zipfile importovať ZipFile

# zadajte názov súboru zip, ktorý chcete extrahovať
názov_súboru = "extract.zip"

# otvorenie súboru zip v režime čítania
s ZipFile (názov_súboru, 'r') ako PSČ:
# zobrazenie obsahu súboru zip
PSČ.printdir()

# extrahovanie všetkých súborov
vytlačiť('Extrahuje sa...')
PSČ.extrahovať všetko()
vytlačiť('Všetky súbory sú extrahované!')

Viac o súboroch ZIP

Súbory zip si získali veľkú obľubu a používajú sa už desaťročia. Populárne webové stránky, ako sú GitHub a Disk Google, vám umožňujú stiahnuť zbierku súborov ako archív zip. Program zip komprimuje súbor súborov do jedného balíka. To je v kontraste s nástrojom ako je tar, ktorý balí súbory dohromady, ale nekomprimuje ich.

Ak chcete šifrovať svoje súbory pomocou efektívnejšieho algoritmu, súbory RAR sú správna cesta. RAR používa algoritmus AES-128, ktorý je lepší ako deflačný algoritmus používaný súbormi zip. Nakoniec si vyberte ten, ktorý najlepšie vyhovuje vašim potrebám.