Рабочая директория python где находится
Перейти к содержимому

Рабочая директория python где находится

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выводы

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

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

Текущая директория в Python

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

Если вы запускаете скрипт C:\Scripts\script.py из D:\work папки:

  • D:\work — это текущая рабочая директория на момент старта скрипта. open(‘file.txt’) будет пытаться открыть D:\work\file.txt файл
  • C:\Scripts — это директория со скриптом.

Текущая рабочая директория

Текущая рабочая директория возвращается os.getcwd() функцией, где CWD это Current Working Directory («текущая рабочая директория»). os.getcwdb() возвращает путь в виде байт. Происхождение функции от POSIX getcwd(3) . Другие способы могут вернуть разные результаты в зависимости от настроек доступа промежуточных директорий, общей длины (от платформы зависит) итд—не изобретайте своих способов, если не осознаёте всех последствий возможного изменения в поведении функции. Также нетрадиционные способы получения рабочей директории могут ухудшить читаемость другими Питон-программистами. Из The Zen of Python :

There should be one— and preferably only one —obvious way to do it.

По умолчанию относительные пути используют именно эту директорию, поэтому явно вызывать os.getcwd() редко нужно. Например, open(‘file.txt’) вызов открывает файл ‘file.txt’ в текущей директории. Если необходимо передать полный путь в виде строки, то можно использовать os.path.abspath(‘file.txt’) — getcwd() снова явно не используется.

Path.cwd() из pathlib модуля возвращает путь к текущей директории как объект c разными полезными и удобными методами такими как .glob(‘**/*.py’) .

Директория со скриптом

Текущая рабочая директория может отличаться от директории с текущим Питон-скриптом. Часто, но не всегда можно os.path.dirname(os.path.abspath(__file__)) использовать, чтобы получить директорию с текущим Питон скриптом, но это не всегда работает. Посмотрите на get_script_dir() функцию, которая поддерживает более общий случай.

Если хочется получить данные из файла, расположенного относительно установленного Питон-модуля, то используйте pkgutil.get_data() или setuptools’ pkg_resources.resource_string() вместо построения путей c помощью __file__ . Это работает даже, если ваш пакет упакован в архив. В Python 3.7 появился importlib.resources модуль. К примеру, если у вас есть Питон пакет data внутри которого лежит файл.txt , то чтобы достать текст:

Если вы хотите найти место куда пользовательские данные можно положить, то appdirs модуль предоставляет переносимый способ:

Разные платформы (Windows, MacOS, Linux) используют разные соглашения, appdirs позволяет не плодить сущностей и использовать на каждой платформе подходящие директории.

Python Directory

The directory that the Python program is in is known as the current working directory for that program. In order to get the current working directory you’ll need to use the os module with the function getcwd() as follows:

To change the current working directory you can use function chdir(). You just pass the current working directory you want to change to as follows:

Join and split a path

To make a program work across platforms including Windows, Linux, and Unix, you need to use a platform-independent file and directory path. Python provides a submodule os.path that contains several useful functions and constants to join and split paths.

The join() function joins path components together and returns a path with exact platform separator for instance in windows backslash () and Unix (/)

The split() function splits path into path components without path separator. Here’s an example of using join() and split() functions:

Test if a path is a directory

In order to check a path exists in a system and a path is a directory you can use the functions exists() and isdir() in the submodule os.path as below:

Create a directory

To create a new directory you use mkdir() or makedirs() functions of os module. And you should always check if a directory exists first before creating a new directory.

The following example creates a new directory called python under the c:\temp directory.

Rename a directory

To rename the directory you use os.rename() function. You need to pass the directory you want to change and the new path.

Delete a directory

To delete a directory, you use function rmdir() function as follows:

Traverse a directory recursively

Python provides os.walk() function that allows you to traverse a directory recursively. The os.walk() function returns the root directory, the sub-directories, and files.

The following example shows how to print all files and directories in the c:\temp directory:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *