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 за компактность.