Как получить и изменить текущий рабочий каталог в Python

При работе с файлами в каталогах в Python всегда рекомендуется использовать абсолютные пути. Однако, если вы работаете с относительными путями, вам необходимо понимать концепцию текущего рабочего каталога и то, как найти или изменить текущий рабочий каталог. Абсолютный путь указывает расположение файла или каталога, начиная с корневого каталога, а относительный путь начинается с текущего рабочего каталога.

Когда вы запускаете сценарий Python, в качестве текущего рабочего каталога устанавливается каталог, из которого выполняется сценарий.

Модуль os python обеспечивает переносимый способ взаимодействия с операционной системой. Модуль является частью стандартной библиотеки Python и включает методы поиска и изменения текущего рабочего каталога.

 

Получение текущего рабочего каталога в Python

Метод  getcwd() модуля os в Python, возвращает строку, содержащую абсолютный путь к текущему рабочему каталогу. Возвращенная строка не включает завершающий символ косой черты.

os.getcwd()


Чтобы использовать методы модуля os, вы должны импортировать модуль в верхней части файла.

Ниже приведен пример, показывающий, как распечатать текущий рабочий каталог:

# Импорт модуля os

import os



# Получить текущий рабочий каталог

cwd = os.getcwd()



# Печать текущего рабочего каталога

print("Текущий рабочий каталог: {0}".format(cwd))



# Выведите тип возвращаемого объекта

print("os.getcwd() возвращает объект типа: {0}".format(type(cwd)))


Результат будет выглядеть примерно так:

Текущий рабочий каталог: /home/AndreyEx/Desktop

os.getcwd() возвращает объект типа: <class 'str'>


Если вы хотите найти каталог, в котором находится сценарий, используйте os.path.realpath(__file__). Он вернет строку, содержащую абсолютный путь к запущенному скрипту.

Изменение текущего рабочего каталога в Python

Чтобы изменить текущий рабочий каталог в Python, используйте метод chdir().

os.getcwd(path)


Метод принимает один аргумент — путь к каталогу, в который вы хотите перейти. Аргумент path может быть абсолютным или относительным.

Вот пример:

# Импорт модуля os

import os



# Печать текущего рабочего каталога

print("Текущий рабочий каталог: {0}".format(os.getcwd()))



# Изменение текущего рабочего каталога

os.chdir('/tmp')



# Печать текущего рабочего каталога

print("Текущий рабочий каталог: {0}".format(os.getcwd()))


Результат будет выглядеть примерно так:

Текущий рабочий каталог: /home/Andreyex/Desktop

Текущий рабочий каталог: /tmp


 

Аргумент, предоставленный методу chdir(), должен быть каталогом, в противном случае возникает исключение NotADirectoryError. Если указанный каталог не существует, возникает исключение FileNotFoundError. Если у пользователя, под которым выполняется сценарий, нет необходимых разрешений, возникает исключение PermissionError.

# Импорт модуля os

import os



path = '/var/www'



try:

    os.chdir(path)

    print("Текущий рабочий каталог: {0}".format(os.getcwd()))

except FileNotFoundError:

    print("Каталог: {0} не существует".format(path))

except NotADirectoryError:

    print("{0} не каталог".format(path))

except PermissionError:

    print("У вас нет прав на изменение {0}".format(path))


Вывод

Чтобы найти текущий рабочий каталог в Python, используйте os.getcwd(), а для изменения текущего рабочего каталога используйте os.chdir(path).

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-10-14T12:11:50
Python