Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

Zipping er en elegant måde at komprimere flere filer og kombinere dem til en enkelt. Dette sparer ikke kun lagerplads, men også båndbredde, når du overfører en fil over et netværk. En af de bedste funktioner ved zip er, at den fungerer på alle større platforme: Windows, Linux og Mac.

Zip bruger tabsfri komprimering, så den bevarer alle data ved komprimering og udkomprimering. Du kan også kryptere og dekryptere dine zip-filer.

Med så mange funktioner at udforske, opdag, hvordan du kan læse, zippe og udpakke filer ved hjælp af Python zipfile-modulet.

Hvad er zipfile-modulet?

Du kan bruge standard zipfile-modulet til at manipulere zip-filer ved hjælp af Python. Med dette modul kan du åbne og læse zip-filer, læse deres metadata, oprette en zip-fil, komprimere den og udpakke filer. Der er tre tilgængelige komprimeringsmetoder: Deflate, Bzip2 og LZMA.

En af de ting, modulet mangler, er evnen til at håndtere multi-disk-filer, men det håndterer ZIP64-udvidelsen. Det kan også dekryptere zip-arkiver, men ikke kryptere dem. Ved at bruge zipfile-modulet kan du få zip-fil metadata såsom dato og tidspunkt for ændring. Du kan også hente detaljer som det operativsystem, der blev brugt til at oprette filen, versionen af ​​zip og filstørrelsen i både komprimeret og ukomprimeret format.

Sådan zipper du filer ved hjælp af Python

Du kan zippe flere filer i ét arkiv ved hjælp af Pythons zipfile-modul. Importer ZipFile modul fra zip-fil pakke til at udføre de nødvendige zip-operationer. Importer også det os modul til at vælge og gemme filer.

Definer en funktion get_all_file_paths(). Det bør acceptere en mappeparameter, der indeholder stien til den mappe, der indeholder filerne, der skal zippes.

Initialiser en tom liste, der gemmer listen over filstier. Brug en for-løkke for at få det fulde indhold af målbiblioteket ved hjælp af os.walk() fungere. Denne funktion henter filnavnene i et mappetræ ved at bevæge sig langs det i en top-down eller en bottom-up tilgang. For hver mappe returnerer funktionen en tre-tuple, der indeholder root, dirs og filer.

Roden er en streng, der indeholder den fulde sti til mappen. Dirs-listen inkluderer alle undermapper indeholdt i mappen. Fillisten indeholder alle filer, der findes i mappen.

Inde i løkken skal du erklære en anden loop for at iterere over fillisten. Brug os.path.join() funktion til at kombinere navnet på mappen med hvert filnavn for at lave en komplet sti. Føj derefter dette komplette filnavn til den liste, du oprettede tidligere. Når denne handling er færdig, returnerer du listen over filstier.

# importer de nødvendige moduler
fra zip-fil importere ZipFile
importere os

# opret en funktion for at få alle filstierne
deffå_alle_filstier(vejviser):
# initialiserer tom liste for at gemme filstier
filstier = []

# naviger gennem filerne
tilrod, mapper, filerios.gå(vejviser):
for filnavn i filer:
# sammenføj roden og filnavnet for at oprette en komplet filsti
filsti = os.sti.join (rod, filnavn)
fil_stier.Tilføj(filsti)

# returnerer alle filstier
Vend tilbage fil_stier

Gem stien til mappen, som indeholder de filer, du vil zippe i en variabel kaldet mappe. Kald funktionen, get_all_file_paths() som du har oprettet tidligere og gemmer den værdi, den returnerer i fil_stier.

Vis en besked til brugeren for at fortælle dem, at det er de filer, som programmet vil zippe. Gentag filerne og vis deres navne.

Giv det navn, du ønsker, at din zip-fil skal have sammen med specifikationen om, at programmet returnerer en skrivbar fil ved hjælp af with-sætningen til at håndtere undtagelser. Gentag over hver fil og brug funktionen write() over den skrivbare fil til en zip-fil.

Når handlingen er fuldført, udsend en meddelelse, der forklarer, at programmet zippede alle filerne med succes.

# sti til den mappe, du vil zippe
mappe = './pythonzip'

# kaldende funktion for at få alle filstier i mappen
file_paths = get_all_file_paths (mappe)

# udskriver listen over alle filer, du vil zippe
Print('Liste over filer, der vil blive zippet:')

for filnavn i filstier:
Print(filnavn)

# skriver filer til en zip-fil
med ZipFile('min_fil.zip', 'w') som zip:
# skriv hver fil en efter en
for fil i filstier:
lynlås.skrive(fil)

Print('Alle filer er zippet!')

Sådan udpakkes filer ved hjælp af Python

Implementeringen af ​​udpakning af filer ved hjælp af zipfile-modulet er meget nemmere. Importer zip-fil pakke fra ZipFile modul og gem navnet på den zip-fil, du vil udpakke, i en variabel. Brug with-sætningen til at håndtere undtagelser, og åbn den fil, du vil udpakke, i læsetilstand. Brug printdir() funktion til at vise indholdsfortegnelsen for filer, der findes i zip.

Vis en statusmeddelelse om, at du udpakker filerne, og brug udtræk Alle() funktion til at udpakke indholdet af zip-filen til den aktuelle arbejdsmappe. Alternativt kan du inkludere en stiparameter for at ændre stien, hvor programmet udpakker filerne.

Vis en besked ved hjælp af Print erklæring om afslutningen af ​​operationen.

# importerer de nødvendige moduler
fra zip-fil importere ZipFile

# videregiv navnet på den zip-fil, du vil udpakke
filnavn = "extract.zip"

# åbning af zip-filen i læsetilstand
med ZipFile (filnavn, 'r') som zip:
# vis indholdet af zip-filen
lynlås.printdir()

# udpakning af alle filer
Print('Uddrag i gang...')
lynlås.udtræk Alle()
Print('Alle filer er pakket ud!')

Mere om Zip-filer

Zip-filer har vundet stor popularitet og er i brug i årtier nu. Populære websteder som GitHub og Google Drive lader dig downloade en samling filer som et zip-arkiv. Zip-programmet komprimerer et sæt filer til en enkelt pakke. Dette er i modsætning til et værktøj som tar, der pakker filer sammen, men ikke komprimerer dem.

Hvis du vil kryptere dine filer ved hjælp af en mere effektiv algoritme, er RAR-filer vejen at gå. RAR bruger AES-128-algoritmen, der er bedre end deflateringsalgoritmen, der bruges af zip-filer. I sidste ende skal du vælge den, der bedst opfylder dit behov.