pathlib Starten — Objectgeoriënteerde Padverwerking

Wanneer je met Python werkt, kom je vaak in de situatie dat je met bestandspaden of mappen moet werken. Dit zijn alledaagse taken zoals het opslaan van logs, het lezen en schrijven van configuratiebestanden, of het organiseren van datafiles. Vroeger werden deze taken gemengd behandeld met modules zoals os.path, glob, en shutil, maar daar is nu geen behoefte meer aan. Waarom?

Omdat er pathlib is!

Wat is pathlib?

pathlib is een objectgeoriënteerde module speciaal voor padverwerking, geïntroduceerd in Python 3.4. Waar je vroeger bestandspaden als simpele strings behandelde, behandelt pathlib de “pad zelf” als een object. Dit maakt het mogelijk om paden te verbinden, de aanwezigheid te controleren, en bestanden te lezen en te schrijven met een veel duidelijkere en leesbaardere syntaxis.

from pathlib import Path

▶ Deze Path klasse werkt automatisch als PosixPath (macOS/Linux) of WindowsPath, afhankelijk van jouw besturingssysteem. Je hoeft je geen zorgen te maken over welk OS je gebruikt!


Essentiële functies en voorbeelden van pathlib

1. Padobject maken

p = Path('data/example.txt')
print(p.resolve())  # Retourneert het absolute pad

Het lijkt misschien een string, maar dit is een object. Je kunt paden op een flexibele manier beheren met verschillende methodes en eigenschappen.

2. Paden combineren: gebruik de / operator

data_dir = Path('data')
file_path = data_dir / 'sample.txt'

Het is zeer Pythonisch dat je paden kunt verbinden met de slash-operator /. Dit is veiliger en leesbaarder dan string concatenatie.

3. Informatie uit paden extraheren

Het is ook zeer handig dat je de componenten van het pad, zoals de bovenliggende map, naam en extensie, kunt scheiden.

p = Path('data/sample.txt')
print(p.parent)   # data
print(p.name)     # sample.txt
print(p.stem)     # sample
print(p.suffix)   # .txt

4. Controleren op bestaan

Geeft een boolean terug.

p.exists()     # Bestaat het?
p.is_file()    # Is het een bestand?
p.is_dir()     # Is het een map?

5. Mappen maken

p = Path('logs/2025/05')
p.mkdir(parents=True, exist_ok=True)

Je kunt geneste mappen in één keer maken, en als ze al bestaan, gebeurt er geen fout.

6. Bestanden lezen en schrijven

p = Path('output.txt')
p.write_text("Hello, World!")

text = p.read_text()
print(text)

Je kunt ook met binaire bestanden omgaan:

p.write_bytes(b'binary data')
data = p.read_bytes()

7. Bestanden/mappen zoeken

print(list(Path('.').glob('*.py')))      # Lijst van .py bestanden in de huidige map
print(list(Path('.').rglob('*.py')))     # Recursieve zoekopdracht in submappen

glob() retourneert een generator, dus het is het beste om het te converteren naar een lijst voor controle.

8. Bestanden verwijderen, verplaatsen, of hernoemen

p.unlink()           # Verwijderen
p.rename('newname')  # Hernoemen (binnen dezelfde map)
p.replace('newpath') # Verplaatsen en overschrijven

rename() kan falen als het doelpad al bestaat, dus gebruik replace() als je wilt overschrijven. Voor kopiëren moet je shutil.copy() gebruiken.


Vergelijking os.path vs pathlib

# os.path
import os
os.path.exists('foo/bar.txt')

# pathlib
Path('foo/bar.txt').exists()
  • De code is veel leesbaarder en overzichtelijker.
  • Bijzonder vertrouwd vanwege de syntax die lijkt op cd, ls, mkdir, wat vaak in Linux omgevingen wordt gebruikt.

Waarom pathlib gebruiken?

  • De code wordt structureel door Path objecten in plaats van strings.
  • Besturingssysteem onafhankelijke padverwerking (Windows vs POSIX)
  • Functionaliteit van os.path, glob, en shutil samengevoegd
  • Verbeterde onderhoudbaarheid in testcode, logging, foutafhandeling, enz.

Tux assembleert bestands padblokken in een Python T-shirt

Slotwoord

Net zoals Counter en defaultdict de omgang met collecties eleganter maakte, zo verandert pathlib de manier waarop we met bestandspaden omgaan volledig. Vergeet de moeilijke tijden van stringverwerking. Probeer de voorbeelden in dit artikel één voor één zelf uit te voeren. Je zult merken dat het veel sneller handiger wordt.

In het volgende deel ga ik geavanceerde toepassingen van shutil behandelen voor het automatiseren van bestandskopieën/back-ups. Verwacht het!

Als je nieuwsgierig bent naar het vorige artikel, kun je het onderaan dit bericht via de links bekijken.

Python Standaardbibliotheek 1 - collections.Counter

Python Standaardbibliotheek 2 - collections.defaultdict