Введение
При работе с файлами в каталогах в Python всегда полезно использовать абсолютные пути. Однако, если вы работаете с относительными путями, вам необходимо понимать концепцию текущего рабочего каталога и то, как найти или изменить текущий рабочий каталог. Абсолютный путь указывает путь к файлу или каталогу, начинающийся с корневого каталога, а относительный путь начинается с текущего рабочего каталога.
При запуске скрипта Python текущим рабочим каталогом задается каталог, из которого запускается скрипт.
Модуль os python предоставляет портативный способ взаимодействия с операционной системой. Модуль является частью стандартной библиотеки Python и включает в себя методы поиска и изменения текущего рабочего каталога.
Получить текущий рабочий каталог в Python
Метод getcwd()
модуля os в Python возвращает строку, содержащую абсолютный путь к текущему рабочему каталогу. Возвращаемая строка не включает завершающий символ косой черты.
os.getcwd()
Чтобы использовать методы модуля операционной системы, вы должны импортировать модуль в начало файла.
Ниже приведен пример, показывающий, как распечатать текущий рабочий каталог:
# Import the os module
import os
# Get the current working directory
cwd = os.getcwd()
# Print the current working directory
print("Current working directory: {0}".format(cwd))
# Print the type of the returned object
print("os.getcwd() returns an object of type: {0}".format(type(cwd)))
Вывод будет выглядеть следующим образом:
Current working directory: /home/noviello
os.getcwd() returns an object of type: <class 'str'>
Если вы хотите найти каталог, в котором находится скрипт, используйте os.path.realpath(__file__)
. Он вернет строку, содержащую абсолютный путь к запущенному скрипту.
Изменить текущий рабочий каталог в Python
Чтобы изменить текущий рабочий каталог в Python, используйте метод chdir()
.
os.getcwd(path)
Метод принимает один аргумент — путь к каталогу, который вы хотите изменить. Аргумент path
может быть абсолютным или относительным.
Вот пример:
# Import the os module
import os
# Print the current working directory
print("Current working directory: {0}".format(os.getcwd()))
# Change the current working directory
os.chdir('/tmp')
# Print the current working directory
print("Current working directory: {0}".format(os.getcwd()))
Вывод будет выглядеть следующим образом:
Current working directory: /home/noviello
Current working directory: /tmp
Аргумент, предоставляемый методом chdir()
, должен быть каталогом, в противном случае возникает исключение NotADirectoryError
. Если указанный каталог не существует, возникает FileNotFoundError
. Если пользователь, под которым выполняется сценарий, не имеет необходимых разрешений, возникает PermissionError
.
# Import the os module
import os
path = '/var/www'
try:
os.chdir(path)
print("Current working directory: {0}".format(os.getcwd()))
except FileNotFoundError:
print("Directory: {0} does not exist".format(path))
except NotADirectoryError:
print("{0} is not a directory".format(path))
except PermissionError:
print("You do not have permissions to change to {0}".format(path))
Вывод
Чтобы найти текущий рабочий каталог в Python, используйте os.getcwd()
, а чтобы изменить текущий рабочий каталог, используйте os.chdir(path)
.