# 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. ![Machine en digitaal samensmelten](/media/editor_temp/6/dde8bc58-b467-4fe2-9370-24899d41a7bd.png) `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? {#sec-92641994f71a} 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()` en `splitext()` 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 `pathlib` duidelijk de voorkeur. --- ## 2. Codevergelijking per taak {#sec-273fe3d2efe4} ### 2.1 Huidige werkmap controleren en map aanmaken {#sec-707744fc63d4} ```python 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) {#sec-55f0047ba895} ```python 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” {#sec-a7e299456c6e} 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 {#sec-1313166407f5} We zoeken binnen een projectmap naar alle `.txt`‑bestanden. ```python 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 {#sec-42d7841b5743} 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) {#sec-bc07d2294385} In verschillende ontwikkel‑ en productie‑omgevingen worden instellingen vaak via omgevingsvariabelen gescheiden van bestanden. ```python 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” {#sec-be8e97bf9b7c} 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. ```python 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 {#sec-3b5ac9f93cf3} * 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 {#sec-a1f526df17df} * **Pad‑manipulatie / bestandsverkenning / bestandsnaam‑verwerking** → `pathlib` is leesbaarder en onderhoudsvriendelijker. * **Omgevingsvariabelen / processen / rechten / OS‑functionaliteit** → `os` is 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 {#sec-94950e4d35ef} * `pathlib` verhoogt de leesbaarheid en stabiliteit van bestandscode aanzienlijk. * `os` beheert 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**: - [[Python standaardbibliotheek - 0] Wat is de Python standaardbibliotheek? Een gids voor beginners](/ko/whitedec/2026/1/29/python-standard-library/) - [Python standaardbibliotheek beheersen 3 - pathlib](/ko/whitedec/2025/5/8/python-standard-library-pathlib/)