Ga naar hoofdinhoud

De huidige map ophalen in Python

Om de huidige werkmap in Python op te halen, kun je ofwel os.getcwd() uit de os-module gebruiken of pathlib.Path.cwd() uit de pathlib-module.
Bijgewerkt 2 okt 2026

Verken met AI

ChatGPTClaudePerplexity

Veel Python-programma's moeten door het bestandssysteem navigeren om bestanden te lezen en te schrijven. Een veelvoorkomende handeling is het ophalen van de huidige werkmap, vaak afgekort tot CWD.

Python heeft twee hoofdmodules die je kunt gebruiken om toegang te krijgen tot bestandspadnamen: de os-module en de pathlib-module.

De os-module biedt de traditionele aanpak om de huidige werkmap op te vragen en werkt met paden en het bestandssysteem.

De pathlib is een nieuwere module die een objectgeoriënteerde, robuuste en platformonafhankelijke aanpak biedt.

In deze tutorial verken ik verschillende technieken om de huidige werkmap op te halen en te bewerken. Wil je meer leren over Python, bekijk dan gerust mijn andere blogposts:

Python: de huidige werkmap (CWD) ophalen

De huidige werkmap is de map waarin een Python-programma wordt uitgevoerd. Dit dient als referentiepunt voor relatieve bestandspaden en geeft het programma toegang tot bestanden en resources binnen de mappenhiërarchie.

Laten we bekijken hoe je de huidige werkmap benadert met de modules os en pathlib en deze twee oplossingen vergelijken.

Met os.getcwd()

De os-module geeft toegang tot het besturingssysteem van de computer. De functie getcwd() haalt de huidige werkmap op:

import os
cwd = os.getcwd()
print(cwd)
/Users/sg/Documents/GitHub/datacamp

De uitvoer toont het pad van de map die het script bevat. De indeling van het pad hangt af van het besturingssysteem. De bovenstaande uitvoer is voor POSIX-besturingssystemen zoals Linux, Unix en macOS.

Op een Windows-systeem zou hetzelfde pad er zo uitzien:

C:\Users\sg\Documents\GitHub\datacamp

De waarde die os.getcwd() retourneert, is een string:

print(type(cwd))
<class 'str'>

Daarom moeten we stringmethoden en andere bewerkingen op strings gebruiken om met dit pad te werken.

Met pathlib.Path.cwd()

Python 3.4 introduceerde de module pathlib, die een objectgeoriënteerde aanpak biedt voor het benaderen en manipuleren van bestandspaden. De belangrijkste klasse in pathlib is Path, die we kunnen importeren voordat we de huidige werkmap ophalen:

from pathlib import Path
cwd = Path.cwd()
print(cwd)
/Users/sg/Documents/GitHub/datacamp

De afgedrukte uitvoer van Path.cwd() lijkt op de waarde die os.getcwd() retourneert. Toch retourneert Path.cwd() geen string. We kunnen dit bevestigen door het type van het geretourneerde object te printen of de officiële stringrepresentatie weer te geven met repr():

print(type(cwd))
print(repr(cwd))
<class 'pathlib.PosixPath'>
PosixPath('/Users/sg/Documents/GitHub/datacamp')

Op een Windows-computer retourneert Path.cwd() een WindowsPath-object.

De objecten PosixPath en WindowsPath bieden vergelijkbare functionaliteit om platformonafhankelijke programma's mogelijk te maken. Dit zijn enkele attributen van deze objecten:

print(cwd.parent)
print(cwd.name)
/Users/sg/Documents/GitHub
datacamp

Waar mogelijk gaat de voorkeur uit naar de module pathlib, die moderner is en het werken met paden eenvoudiger maakt. Je kunt deze uitgebreide gids over het gebruik van pathlib in Python lezen als je meer wilt leren.

Werken met de huidige map

Python-programma's moeten vaak met het pad werken, bijvoorbeeld om een bestand in een submap op te slaan. Stel dat we een nieuwe submap in onze huidige werkmap moeten maken en daarin een tekstbestand moeten opslaan.

Met de os-module

De functie getcwd() in de os-module retourneert een string. Daarom is het mogelijk om deze string handmatig aan te passen om het pad te wijzigen. De benodigde aanpassingen verschillen echter per besturingssysteem, omdat verschillende systemen verschillende padindelingen hebben. Een betere optie is om os.path.join() te gebruiken:

import os
cwd = os.getcwd()
output_path = os.path.join(cwd, "testing_os")
print(output_path)
/Users/sg/Documents/GitHub/datacamp/testing_os

Het pad dat os.path.join() retourneert, heeft de juiste indeling voor het gebruikte besturingssysteem. Dit levert een string op met het nieuwe pad. We kunnen controleren of deze submap bestaat met os.path.exists(), dat een booleaan retourneert:

print(os.path.exists(output_path))
False

Dit laat zien dat het pad dat door output_path wordt weergegeven, nog niet bestaat. De os-module biedt hulpmiddelen om deze map te maken. De functie os.mkdir() maakt een nieuwe map:

os.mkdir(output_path)
print(os.path.exists(output_path))
True

De nieuwe submap bestaat nu, en nieuwe bestanden kunnen in deze map worden opgeslagen:

output_file = os.path.join(output_path, "test.txt")
with open(output_file, "w") as file:
    file.write("Testing path modification with the 'os' module")

De variabele output_file bevat de naam van het gewenste uitvoerbestand met het volledige pad. Dit tekstbestand wordt gemaakt in de submap /testing_os binnen de huidige werkmap.

We kunnen ook alle items in een map opvragen met os.listdir():

for item in os.listdir(output_path):
    print(item)
test.txt

De functie os.listdir() retourneert een lijst met alle items in de map. Deze code itereert door die lijst om elk bestand of elke map op een aparte regel weer te geven. In dit voorbeeld bevat de map één tekstbestand.

Met de pathlib-module

De nieuwere module pathlib biedt ook hulpmiddelen om nieuwe paden te maken. Deze module gebruikt de slash-operator / om elementen tot één pad te combineren. Dit is dezelfde operator die wordt gebruikt voor deling van numerieke datatypen, maar ook het teken dat in POSIX-besturingssystemen in bestandspaden wordt gebruikt. Laten we een nieuw pad maken en controleren dat het nog niet bestaat:

from pathlib import Path
cwd = Path.cwd()
output_path = cwd / "testing_pathlib"
print(output_path)
print(Path.exists(output_path))
/Users/sg/Documents/GitHub/datacamp/testing_pathlib
False

De klasse Path heeft een eigen methode .mkdir() om een nieuwe map te maken:

Path.mkdir(output_path)
print(Path.exists(output_path))
True

Omdat output_path een PosixPath- of WindowsPath-object is, kunnen we overal de slash-operator gebruiken om een nieuw pad te maken:

with open(output_path / "test.txt", "w") as file:
    file.write("Testing path modification with the 'pathlib' module")

Het nieuwe tekstbestand wordt gemaakt in de map /testing_pathlib.

We kunnen de methode Path .iterdir() gebruiken om door elk item in een map te itereren:

for item in Path.iterdir(output_path):
    print(item)
/Users/sg/Documents/GitHub/datacamp/testing_pathlib/test.txt

Zoals met andere tools in pathlib is de geretourneerde waarde geen string. In plaats daarvan is het een PosixPath- of WindowsPath-object. We kunnen het attribuut .name gebruiken om de bestands- of mapnaam zonder het volledige pad weer te geven:

for item in Path.iterdir(output_path):
    print(item.name)
test.txt

Waar os.listdir() een lijst retourneert, retourneert pathlib.Path.iterdir() een generator-object (je kunt deze tutorial over Python-iterators en -generators lezen als je een opfrisser nodig hebt):

print(Path.iterdir(cwd))
<generator object Path.iterdir at 0x1036b2c20>

Dit gedrag volgt de best practices in modern Python, omdat iterators en generators in bepaalde situaties efficiënter zijn.

De huidige werkmap (CWD) wijzigen

Het is ook mogelijk om de huidige werkmap direct vanuit een Python-programma te wijzigen met os.chdir(). Omdat dit geen bewerking is die direct met het pad te maken heeft, is er geen alternatief in pathlib. We kunnen echter nog steeds pathlib.Path-objecten als argumenten gebruiken:

import os
from pathlib import Path
cwd = Path.cwd()
print(cwd)

os.chdir(cwd.parent)
cwd = Path.cwd()
print(cwd)
/Users/sg/Documents/GitHub/datacamp
/Users/sg/Documents/GitHub

De werkmap is nu gewijzigd. We kunnen ook cwd.parent.resolve() gebruiken om ervoor te zorgen dat eventuele symbolische links correct worden afgehandeld. Het argument in os.chdir() kan ook een string zijn, zoals de paden die worden geretourneerd door functies in de os-module.

Wees voorzichtig bij het wijzigen van de werkmap binnen een programma om onverwacht gedrag te voorkomen.

Best practices en tips

Hier zijn enkele best practices en tips voor het werken met paden in Python:

Best practices voor werken met paden in Python

Conclusie

Navigeren door en manipuleren van bestandspaden is een veelvoorkomende vereiste in veel Python-programma's. De os-module biedt de traditionele functies om deze taken af te handelen, terwijl de pathlib-module een modernere, objectgeoriënteerde aanpak biedt. Het gebruik van pathlib vereenvoudigt niet alleen veel handelingen, maar zorgt er ook voor dat je code platformonafhankelijk blijft en makkelijker te lezen is.

Of je nu een bestaande codebase onderhoudt die os gebruikt, of een nieuw project start waarin je pathlib kunt inzetten, inzicht in beide modules en hun mogelijkheden geeft je de flexibiliteit en het vertrouwen om paden in elk Python-project te beheren.

Ga verder met je Python-leertraject met deze cursussen:


Stephen Gruppetta's photo
Author
Stephen Gruppetta
LinkedIn
Twitter

Ik studeerde natuurkunde en wiskunde op bachelorniveau aan de Universiteit van Malta. Daarna verhuisde ik naar Londen en behaalde ik mijn PhD in natuurkunde aan Imperial College. Ik werkte aan nieuwe optische technieken om het menselijk netvlies in beeld te brengen. Nu richt ik me op schrijven over Python, communiceren over Python en lesgeven in Python.

Onderwerpen
Python

Leer Python met deze cursussen!

{count, plural, one {Cursus} other {Cursussen}}

Introductie tot Python voor developers

{hours} uur
182.5K
Beheers de basisprincipes van programmeren in Python. Geen voorkennis vereist!
Bekijk detailsRight Arrow
Start Cursus
Meer bekijkenRight Arrow
Gerelateerd

{count, plural, one {blog} other {blogs}}

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer BekijkenMeer Bekijken