Bestands- en OS-omgeving beheren: pathlib vs os
Serie 02 – Vrijheid met mappen en bestanden in Python
Bij het schrijven van een programma is het vaak nodig om bestanden aan te maken, mappen te verplaatsen en paden te inspecteren. Python biedt hiervoor twee effectieve oplossingen.
Een elegante manier om paden te hanteren is pathlib, terwijl os de OS-omgeving zelf beheert.

pathlib is de ster in padmanipulatie, terwijl os de backstage manager is die belichting, geluid en toegangscontrole regelt. In plaats van één te kiezen, is het aan te raden om ze samen te gebruiken.
1. os en pathlib, wat is het verschil?
Met de introductie van pathlib in Python 3.4 is de manier waarop paden worden verwerkt aanzienlijk verbeterd.
os/os.path- Werkt met paden als strings.
- Functies zoals
os.path.join(),basename()ensplitext()kunnen de code omslachtig maken. -
Behandelt echter ook OS-functies (omgevingsvariabelen, processen, rechten, etc.).
-
pathlib - Werkt met paden als objecten (Path).
- Dankzij de
/operator en method chaining is de code korter en intuïtiever. - Voor “pad‑taken” zoals zoeken en extensie‑verwerking heeft
pathlibduidelijk de voorkeur.
2. Codevergelijking per taak
2.1 Huidige werkmap controleren en map aanmaken
import os
from pathlib import Path
# os‑methode
current_os = os.getcwd()
if not os.path.exists("test_os"):
os.makedirs("test_os")
# pathlib‑methode
current_pl = Path.cwd()
Path("test_pl").mkdir(exist_ok=True)
Tip: Als paden veelvuldig in de code voorkomen, is pathlib beter voor onderhoud.
2.2 Paden samenvoegen (het grootste verschil)
import os
from pathlib import Path
# os‑methode
path_os = os.path.join("usr", "bin", "python")
# pathlib‑methode (slash‑operator)
path_pl = Path("usr") / "bin" / "python"
Bij een toenemend aantal samenvoegingen wordt pathlib leesbaarder.
3. Waarom pathlib wordt aanbevolen: de kracht van “pad‑objecten”
De voordelen van pathlib eindigen niet bij samenvoegen. Bij het ophalen van bestandsinformatie wordt het verschil nog duidelijker.
| Functie | os.path |
pathlib |
|---|---|---|
| Bestandnaam | os.path.basename(p) |
p.name |
| Naam zonder extensie | os.path.splitext(os.path.basename(p))[0] |
p.stem |
| Extensie | os.path.splitext(p)[1] |
p.suffix |
| Ouder‑map | os.path.dirname(p) |
p.parent |
Deze kleine, maar frequente pad‑operaties stapelen zich op; door alles met pathlib te doen, wordt de code van het team overzichtelijker.
4. Praktijkvoorbeeld: alleen bestanden met een bepaalde extensie zoeken
We zoeken binnen een projectmap naar alle .txt‑bestanden.
from pathlib import Path
base_path = Path.cwd()
txt_files = list(base_path.rglob("*.txt")) # recursief zoeken inclusief submappen
for file in txt_files:
print(f"Bestand: {file.name}, Absoluut pad: {file.resolve()}")
Met één rglob() is recursief zoeken voltooid. pathlib toont hier echt zijn kracht.
5. Waar os echt in uitblinkt: de OS‑omgeving beheren
Hier ligt de balans.
pathlib is een pad‑expert, maar os is de module die het OS zelf aanstuurt.
5.1 Omgevingsvariabelen lezen/schrijven (kern voor deployment, beveiliging, configuratie)
In verschillende ontwikkel‑ en productie‑omgevingen worden instellingen vaak via omgevingsvariabelen gescheiden van bestanden.
import os
# lezen
db_url = os.environ.get("DATABASE_URL", "sqlite:///local.db")
# schrijven (meestal alleen voor de huidige proces)
os.environ["APP_ENV"] = "production"
Voor API‑sleutels, modus, log‑niveau of feature‑flags is os de juiste plek.
5.2 Processen/commando’s uitvoeren: “OS laten werken”
Het uitvoeren van externe commando’s of het beheren van processen valt onder OS‑functionaliteit.
os biedt een laagniveau‑interface; vaak wordt echter subprocess gebruikt, maar de basis blijft OS‑beheer.
import os
# eenvoudige uitvoering (retourneert exit‑code)
exit_code = os.system("echo hello")
print(exit_code)
Andere functies voor gedetailleerde proces‑controle (starten, vervangen, fork) behoren ook tot os. Dit is een compleet ander domein dan pad‑manipulatie.
5.3 Rechten, gebruikers, werkmap en andere omgevingsaspecten
- Rechten wijzigen (Unix‑achtig):
os.chmod() - Werkmap wijzigen:
os.chdir() - Proces‑/gebruikersinformatie:
os.getpid()etc.
Deze functies kunnen niet door pathlib worden vervangen. Hier is os de enige optie.
6. Conclusie: de rollen van pathlib en os verdelen
- Pad‑manipulatie / bestandsverkenning / bestandsnaam‑verwerking →
pathlibis leesbaarder en onderhoudsvriendelijker. - Omgevingsvariabelen / processen / rechten / OS‑functionaliteit →
osis de unieke domein.
De beste aanpak is simpel:
- “Alles wat een pad betreft, gebruik
Path.” - “Wanneer je met het OS moet communiceren, gebruik
os.”
7. Samenvatting
pathlibverhoogt de leesbaarheid en stabiliteit van bestandscode aanzienlijk.osbeheert de OS‑omgeving zelf, buiten pad‑manipulatie.- De juiste keuze is niet één of de ander, maar een combinatie van
pathlib + os.
Kort samengevat: werk met paden en bestanden met pathlib, de OS‑omgeving met os.
Gerelateerde artikelen:
There are no comments.