Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Zipping är ett elegant sätt att komprimera flera filer och kombinera dem till en enda. Detta sparar inte bara lagringsutrymme utan även bandbredd vid överföring av en fil över ett nätverk. En av de bästa funktionerna med zip är att det fungerar på alla större plattformar: Windows, Linux och Mac.

Zip använder förlustfri komprimering så att den behåller all data vid komprimering och uppackning. Du kan också kryptera och dekryptera dina zip-filer.

Med så många funktioner att utforska, upptäck hur du kan läsa, zippa och packa upp filer med Python zipfile-modulen.

Vad är zipfile-modulen?

Du kan använda standard zipfile-modulen för att manipulera zip-filer med Python. Med den här modulen kan du öppna och läsa zip-filer, läsa deras metadata, skapa en zip-fil, komprimera den och packa upp filer. Det finns tre komprimeringsmetoder tillgängliga: Deflate, Bzip2 och LZMA.

instagram viewer

En av de saker som modulen saknar är förmågan att hantera multi-disk-filer, men den hanterar ZIP64-tillägget. Det kan också dekryptera zip-arkiv men inte kryptera dem. Genom att använda zipfile-modulen kan du få zip-fil metadata såsom datum och tid för ändring. Du kan också hämta detaljer som operativsystemet som används för att skapa filen, versionen av zip och filstorleken i både komprimerat och okomprimerat format.

Hur man zippar filer med Python

Du kan zippa flera filer till ett arkiv med Pythons zipfilmodul. Importera Zip fil modul från Zip fil paketet för att utföra de nödvändiga zip-operationerna. Importera också de os modul för att välja och spara filer.

Definiera en funktion get_all_file_paths(). Den bör acceptera en katalogparameter som innehåller sökvägen till mappen som innehåller filerna att zippa.

Initiera en tom lista som lagrar listan över filsökvägar. Använd en for-loop för att få hela innehållet i målkatalogen med hjälp av os.walk() fungera. Den här funktionen hämtar filnamnen i ett katalogträd genom att flytta längs det uppifrån och ner eller nedifrån. För varje katalog returnerar funktionen en tre-tuppel som innehåller root, dirs och filer.

Roten är en sträng som innehåller hela sökvägen till katalogen. Dirs-listan inkluderar alla underkataloger som finns i katalogen. Fillistan innehåller alla filer som finns i katalogen.

Inuti slingan, förklara en annan loop för att iterera över fillistan. Använd os.path.join() funktion för att kombinera namnet på katalogen med varje filnamn för att skapa en komplett sökväg. Lägg sedan till detta fullständiga filnamn till listan du skapade tidigare. När den här operationen är klar returnerar du listan över filsökvägar.

# importera de nödvändiga modulerna
från Zip fil importera Zip fil
importera os

# skapa en funktion för att få alla filsökvägar
defget_all_file_paths(katalog):
# initierar tom lista för att lagra filsökvägar
filsökvägar = []

# navigera genom filerna
förrot, kataloger, filerios.gå(katalog):
för filnamn i filer:
# slå samman roten och filnamnet för att skapa en komplett filsökväg
filsökväg = os.sökväg.join (rot, filnamn)
fil_sökvägar.bifoga(sökväg)

# returnerar alla filsökvägar
lämna tillbaka fil_sökvägar

Lagra sökvägen till mappen som innehåller filerna som du vill zippa i en variabel som heter katalog. Ring funktionen, get_all_file_paths() som du skapade tidigare och lagrar värdet det returnerar i fil_sökvägar.

Visa ett meddelande för användaren för att låta dem veta att det här är filerna som programmet kommer att zippa. Iterera över filerna och visa deras namn.

Skicka namnet du vill att din zip-fil ska ha tillsammans med specifikationen att programmet returnerar en skrivbar fil med hjälp av with-satsen för att hantera undantag. Iterera över varje fil och använd funktionen write() över den skrivbara filen till en zip-fil.

När operationen är klar, skicka ett meddelande som förklarar att programmet zippade alla filer framgångsrikt.

# sökväg till mapp du vill zippa
katalog = './pythonzip'

# anropsfunktion för att få alla filsökvägar i katalogen
file_paths = get_all_file_paths (katalog)

# skriver ut listan över alla filer du vill zippa
skriva ut('Lista över filer som kommer att zippas:')

för filnamn i filsökvägar:
skriva ut(filnamn)

# skriver filer till en zip-fil
med Zip fil('min_fil.zip', 'w') som blixtlås:
# skriv varje fil en efter en
för fil i filsökvägar:
blixtlås.skriva(fil)

skriva ut("Alla filer är zippade!")

Hur man packar upp filer med Python

Implementeringen av att packa upp filer med zipfile-modulen är mycket enklare. Importera Zip fil paket från Zip fil modul och lagra namnet på zip-filen du vill extrahera i en variabel. Använd with-satsen för att hantera undantag och öppna filen du vill extrahera i läsläget. Använd printdir() funktion för att visa innehållsförteckningen för filer som finns i zip.

Visa ett förloppsmeddelande om att du extraherar filerna och använd extraheraall() funktion för att extrahera innehållet i zip-filen till den aktuella arbetskatalogen. Alternativt kan du inkludera en sökvägsparameter för att ändra sökvägen där programmet extraherar filerna.

Visa ett meddelande med hjälp av skriva ut uttalande om avslutad operation.

# importera de nödvändiga modulerna
från Zip fil importera Zip fil

# skicka namnet på zip-filen du vill extrahera
filnamn = "extract.zip"

# öppna zip-filen i läsläge
med ZipFile (filnamn, 'r') som blixtlås:
# visa innehållet i zip-filen
blixtlås.printdir()

# extrahera alla filer
skriva ut("Utdrag pågår...")
blixtlås.extractall()
skriva ut('Alla filer är extraherade!')

Mer om Zip-filer

Zip-filer har blivit mycket populära och har använts i decennier nu. Populära webbplatser som GitHub och Google Drive låter dig ladda ner en samling filer som ett zip-arkiv. Zip-programmet komprimerar en uppsättning filer till ett enda paket. Detta till skillnad från ett verktyg som tar som paketerar filer tillsammans men inte komprimerar dem.

Om du vill kryptera dina filer med en mer effektiv algoritm är RAR-filer rätt väg att gå. RAR använder AES-128-algoritmen som är bättre än deflate-algoritmen som används av zip-filer. I slutändan, välj den som bäst uppfyller dina behov.