Дополнительно
Найти текущий каталог и каталог файла
Какие команды можно использовать в Python для поиска:
- текущий каталог (где я находился в терминале, когда запускал скрипт Python), и
- где находится файл, который я выполняю?
1986
13
Чтобы получить полный путь к директории, в которой находится файл Python, напишите в этом файле следующее:
(Обратите внимание, что приведенное выше заклинание не сработает, если вы уже использовали
os.chdir()
для изменения текущего рабочего каталога, поскольку значение константы__file__
относительно текущего рабочего каталога и не меняется при вызовеos.chdir()
).Чтобы получить текущий рабочий каталог, используйте
Ссылки на документацию для модулей, констант и функций, использованных выше:
os
иos.path
.__file__
os.path.realpath(path)
(возвращает "канонический путь к указанному имени файла, исключая все встречающиеся в пути символические ссылки")os.path.dirname(path)
(возвращает "имя каталога для имени путиpath
")os.getcwd()
(возвращает "строку, представляющую текущий рабочий каталог")os.chdir(path)
("изменяет текущий рабочий каталог наpath
")Текущий рабочий каталог:
os.getcwd()
А атрибут
__file__
поможет вам узнать, где находится выполняемый файл. В этом посте SO все объясняется: https://stackoverflow.com/questions/2632199/how-do-i-get-the-path-of-the-current-executed-file-in-pythonЭто может вам пригодиться в качестве ссылки:
[
pathlib
] модули(https://docs.python.org/3/library/pathlib.html), представил в Python 3.4 (Пеп 428 — модуль pathlib — объектно-ориентированная файловая система путь), делает путь, связанных с большим опытом гораздо лучше.Для того чтобы получить текущие использовать рабочую директорию
путь.Дов()
:Чтобы получить абсолютный путь к файлу сценария, пути использования
.разрешения()
метод:И чтобы получить путь к каталогу, где находится ваш скрипт, доступ к
.родитель
(рекомендуется позвонить.решения()перед
.родитель`):Помните, что `file, что не является надежным в некоторых ситуациях: как я могу получить путь текущего исполняемого файла в Python?.
Обратите внимание, что путь.ухо()
,
путь.решения () и другие методы "путь" возвратить объекты путь (PosixPath
в моем случае), а не строки. В Python 3.4 и 3.5, что вызвало некоторую боль, потому чтооткрыть
встроенные функции могут работать только со строковыми или байт объекты, а не поддерживать "путь" объекты, поэтому приходилось конвертироватьпуть
объекты в строки или использоватьпуть.открыть()
метод, но последний вариант требует изменить старый код:Как вы можете видеть, открыть(р)` не работает с Python 3.5.
ОПТОСОЗ 519 — добавить путь к файлу протокола, реализованный на языке Python 3.6, добавляет поддержку
PathLike
объектыоткрыть
функция, так что теперь вы можете пройти "путь" объекты "открыть" функции:1.Чтобы получить полный путь к текущему каталогу
o/p:"C :\Users\admin\myfolder"
1.Чтобы получить только имя папки текущего каталога
o/p:"myfolder"
Если вы пытаетесь найти текущий каталог файл в данный момент Вы находитесь в:
ОС агностик образом:
Если вы'вновь с помощью Python 3.4, есть абсолютно новый, более высокий уровень
pathlib
модуль, который позволяет удобно называть pathlib.Путь.чвд (), чтобы получить
путь` объект, представляющий вашу текущую рабочую директорию, наряду со многими другими новыми функциями.Подробнее на этот новый API можно найти здесь.
Ответ #1:
Если вы хотите текущем каталоге, выполните следующие действия:
Если вы хотите просто любое имя папки и путь к этой папке, сделайте следующее:
Ответ #2:
Немного опоздала на вечеринку, но я думаю, что самый краткий путь, чтобы найти имя текущего контекста выполнения будет
Pathlib может быть использован таким образом, чтобы получить каталог, содержащий текущий скрипт :
Чтобы получить полный путь текущего каталога:<БР/>
Если вы'вновь искать место, которая сейчас выполняется скрипт, можно использовать представление sys.аргумент argv[0], чтобы получить полный путь.
На вопрос операционной системы 1 использовать.функция getcwd() # получить рабочую Dir
и
ОС.оператор chdir(Р'D:\Steam\steamapps\common') # комплект рабочих реж`Я рекомендую использовать пакет
sys.аргумент argv[0] на вопрос 2, потому что представление sys.агду-это неизменный и, следовательно, всегда возвращает текущий файл (путь к объекту модуль) и не зависит от ос.помощью chdir()
. Также вы можете сделать как этот:но что фрагмент и sys файлы.аргумент argv[0] не будет работать или будет работать странно, когда составлен PyInstaller, потому что магические свойства не установлены в уровень _главный ___ " и " представление sys.аргумент argv[0]` - это путь в EXE-файл называется (означает, что он становится пострадавшим от рабочего каталога).