ZIP-archieven maken in Python: van volledige directory tot aangepaste bestandsselectie
Python maakt het eenvoudig om ZIP- en TAR-archieven te maken, of je nu een volledige directory wilt comprimeren of specifieke bestanden wilt selecteren.
Gebruik shutil.make_archive voor een snelle, directory-brede zip:
shutil.make_archive(output_filename, 'zip', dir_name)
Voor granulair controle laat de zipfile.ZipFile class je individuele bestanden specificeren:
ZipFile.write(filename)
Stap 1: De omgeving voorbereiden
- Importeer de benodigde modules:
from shutil import make_archive from zipfile import ZipFile from os import path import os
- Zorg dat het bronbestand bestaat en haal het absolute pad op.
if path.exists("guru99.txt"): src = path.realpath("guru99.txt") - Optioneel een bestaand bestand hernoemen naar de doelnaam.
Stap 2: De volledige directory zippen
Als je alles in een map wilt archiveren, gebruik make_archive:
root_dir, _ = path.split(src)
make_archive("guru99_archive", "zip", root_dir)
Dit creëert guru99_archive.zip in de huidige werkdirectory.
Stap 3: Specifieke bestanden toevoegen aan een nieuwe ZIP
Als je fijnere controle nodig hebt, is de ZipFile class ideaal:
with ZipFile("testguru99.zip", "w") as newzip:
newzip.write("guru99.txt")
newzip.write("guru99.txt.bak")
De with statement sluit het archief automatisch wanneer het blok eindigt.
Stap 4: Het resultaat verifiëren
Open het gegenereerde ZIP-bestand in je besturingssysteem's bestandsverkenner om de inhoud te zien. Op Windows toont een dubbele klik een lijst van de opgenomen bestanden.
Hieronder illustratieve screenshots van een typische workflow:







Complete code (Python 3):
import os
from shutil import make_archive
from zipfile import ZipFile
from os import path
def main():
if path.exists("guru99.txt"):
# Absoluut pad naar bronbestand
src = path.realpath("guru99.txt")
# Optioneel: bestaand bestand hernoemen
os.rename("career.guru99.txt", "guru99.txt")
# Hele directory archiveren
root_dir, _ = path.split(src)
make_archive("guru99_archive", "zip", root_dir)
# Tweede ZIP met geselecteerde bestanden
with ZipFile("testguru99.zip", "w") as newzip:
newzip.write("guru99.txt")
newzip.write("guru99.txt.bak")
if __name__ == "__main__":
main()
Samenvatting
- Om een volledige directory te zippen, roep
shutil.make_archive('naam', 'zip', root_dir)aan. - Om specifieke bestanden toe te voegen, gebruik
ZipFile.write(bestandsnaam)binnen eenwithblok.
Python
- Python-bestands-I/O: bestandsbewerkingen, lezen, schrijven en beheer beheersen
- Python's strip()-methode beheersen: Uitgebreide handleiding & praktische voorbeelden
- Python's str.count() beheersen: Karakters & substrings tellen met voorbeelden
- Python round()-functie uitgelegd met praktische voorbeelden
- Python's map()-functie beheersen: syntaxis, voorbeelden en best practices
- Python timeit() – Uitvoeringstijd meten met praktische voorbeelden
- Python Counter in collections – Efficiënt tellen, updaten en rekenkundige operaties
- Python list.count(): Expert Gids met Praktische Voorbeelden
- Python List index() – Elementposities Vinden met Praktische Voorbeelden
- Python Extensieprogrammering met C: Snelle, Native Modules Bouwen
- Bestanden Lezen in Java met BufferedReader – Een Praktische Gids met Voorbeelden