Как в Python - программе узнать путь до текущей директории со скриптом. Я знаю, что для этого требуется библиотека os, но там столько различных классов и функций, что можно пол дня убить на поиски.
on5fydu8@gmail.com
·
01.01.1970 03:00
Текущая директория в Python
on5fydu8@gmail.com
·
01.01.1970 03:00
"
Если вы запускаете скрипт C:\Scripts\script.py из D:\work папки:
D:\work> py C:\Scripts\script.pyто:
D:\work— это текущая рабочая директория на момент старта скрипта.open('file.txt')будет пытаться открытьD:\work\file.txtфайлC:\Scripts— это директория со скриптом.
Текущая рабочая директория
Текущая рабочая директория возвращается , где CWD это Current Working Directory (""текущая рабочая директория""). os.getcwdb() возвращает путь в виде байт. Происхождение функции от . Другие способы могут вернуть разные результаты в зависимости от настроек доступа промежуточных директорий, общей длины (от платформы зависит) итд—не изобретайте своих способов, если не осознаёте всех последствий возможного изменения в поведении функции. Также нетрадиционные способы получения рабочей директории могут ухудшить читаемость другими Питон-программистами. Из :
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() снова явно не используется.
возвращает путь к текущей директории как объект c разными полезными и удобными методами такими как .glob('**/*.py').
Директория со скриптом
Текущая рабочая директория может отличаться от директории с текущим Питон-скриптом. Часто, но не всегда можно os.path.diame(os.path.abspath(__file__)) использовать, чтобы получить директорию с текущим Питон скриптом, но это не всегда работает. Посмотрите на .
Если хочется получить данные из файла, расположенного относительно установленного Питон-модуля, то используйте или setuptools' вместо построения путей c помощью __file__. Это работает даже, если . В Python 3.7 появился . К примеру, если у вас есть Питон пакет data внутри которого лежит файл.txt, то чтобы достать текст:
import importlib.resourcestext = importlib.resources.read_text('data', 'файл.txt') Если вы хотите найти место куда пользовательские данные можно положить, то предоставляет переносимый способ:
import appdirs # $ pip install appdirsuser_data_dir = appdirs.user_data_dir(""Название приложения"", ""Кто создал"")Разные платформы (Windows, MacOS, Linux) используют разные соглашения, appdirs позволяет не плодить сущностей и использовать на каждой платформе подходящие директории.
"