Python: получить путь к текущей рабочей директории

Чтобы программа знала, где она запущена и куда сохранять результаты, нужен путь к текущему рабочему каталогу. В Python это решается одной строкой — через pathlib или os.


Что нужно знать


Пример 1: модуль pathlib

import pathlib

# path of the given file
print(pathlib.Path("my_file.txt").parent.absolute())

# current working directory
print(pathlib.Path().absolute())

Вывод

/Users/username
/Users/username

Что здесь происходит:

  • Path("my_file.txt") оборачивает имя файла в объект пути.

  • parent возвращает «родительский» каталог (логически — папку, в которой лежит файл).

  • absolute() достраивает абсолютный путь.

  • Пустой Path() соответствует текущей директории, поэтому Path().absolute() — это короткая запись для получения CWD.


Пример 2: модуль os

import os

# path of the given file
print(os.path.dirname(os.path.abspath("my_file.txt")))

# current working directory
print(os.path.abspath(os.getcwd()))

Вывод

/Users/username
/Users/username

То же самое классическим способом:

  • os.path.abspath() превращает относительный путь в абсолютный.

  • os.path.dirname() отрезает имя файла, оставляя каталог.

  • os.getcwd() сразу возвращает текущую рабочую директорию.


Как это работает

Под капотом и pathlib, и os обращаются к одному и тому же системному вызову операционной системы. Разница только в стиле API: pathlib — объектно-ориентированный, os — функциональный. В новом коде обычно предпочитают pathlib за компактность.