Какие команды можно использовать в Python для поиска:
Чтобы получить полный путь к директории, в которой находится файл Python, напишите в этом файле следующее:
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
(Обратите внимание, что приведенное выше заклинание не сработает, если вы уже использовали os.chdir()
для изменения текущего рабочего каталога, поскольку значение константы __file__
относительно текущего рабочего каталога и не меняется при вызове os.chdir()
).
Чтобы получить текущий рабочий каталог, используйте
import os
cwd = os.getcwd()
Ссылки на документацию для модулей, констант и функций, использованных выше:
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
Это может вам пригодиться в качестве ссылки:
import os
print("Path at terminal when executing this file")
print(os.getcwd() + "\n")
print("This file path, relative to os.getcwd()")
print(__file__ + "\n")
print("This file full path (following symlinks)")
full_path = os.path.realpath(__file__)
print(full_path + "\n")
print("This file directory and name")
path, filename = os.path.split(full_path)
print(path + ' --> ' + filename + "\n")
print("This file directory only")
print(os.path.dirname(full_path))
[pathlib
] модули(https://docs.python.org/3/library/pathlib.html), представил в Python 3.4 (Пеп 428 — модуль pathlib — объектно-ориентированная файловая система путь), делает путь, связанных с большим опытом гораздо лучше.
$ pwd
/home/skovorodkin/stack
$ tree
.
└── scripts
├── 1.py
└── 2.py
Для того чтобы получить текущие использовать рабочую директорию путь.Дов()
:
from pathlib import Path
print(Path.cwd()) # /home/skovorodkin/stack
Чтобы получить абсолютный путь к файлу сценария, пути использования .разрешения()
метод:
print(Path(__file__).resolve()) # /home/skovorodkin/stack/scripts/1.py
И чтобы получить путь к каталогу, где находится ваш скрипт, доступ к .родитель
(рекомендуется позвонить.решения()перед
.родитель`):
print(Path(__file__).resolve().parent) # /home/skovorodkin/stack/scripts
Помните, что `file, что не является надежным в некоторых ситуациях: как я могу получить путь текущего исполняемого файла в Python?.
Обратите внимание, что путь.ухо(),
путь.решения () и другие методы "путь" возвратить объекты путь (PosixPath
в моем случае), а не строки. В Python 3.4 и 3.5, что вызвало некоторую боль, потому что открыть
встроенные функции могут работать только со строковыми или байт объекты, а не поддерживать "путь" объекты, поэтому приходилось конвертировать путь
объекты в строки или использовать путь.открыть()
метод, но последний вариант требует изменить старый код:
$ cat scripts/2.py
from pathlib import Path
p = Path(__file__).resolve()
with p.open() as f: pass
with open(str(p)) as f: pass
with open(p) as f: pass
print('OK')
$ python3.5 scripts/2.py
Traceback (most recent call last):
File "scripts/2.py", line 11, in <module>
with open(p) as f:
TypeError: invalid file: PosixPath('/home/skovorodkin/stack/scripts/2.py')
Как вы можете видеть, открыть(р)` не работает с Python 3.5.
ОПТОСОЗ 519 — добавить путь к файлу протокола, реализованный на языке Python 3.6, добавляет поддержку PathLike
объекты открыть
функция, так что теперь вы можете пройти "путь" объекты "открыть" функции:
$ python3.6 scripts/2.py
OK
1.Чтобы получить полный путь к текущему каталогу
>>import os
>>print os.getcwd()
o/p:"C :\Users\admin\myfolder"
1.Чтобы получить только имя папки текущего каталога
>>import os
>>str1=os.getcwd()
>>str2=str1.split('\\')
>>n=len(str2)
>>print str2[n-1]
o/p:"myfolder"
Если вы'вновь с помощью Python 3.4, есть абсолютно новый, более высокий уровень pathlib
модуль, который позволяет удобно называть pathlib.Путь.чвд (), чтобы получить
путь` объект, представляющий вашу текущую рабочую директорию, наряду со многими другими новыми функциями.
Подробнее на этот новый API можно найти здесь.
Ответ #1:
Если вы хотите текущем каталоге, выполните следующие действия:
import os
os.getcwd()
Если вы хотите просто любое имя папки и путь к этой папке, сделайте следующее:
def get_folder_name(folder):
'''
Returns the folder name, given a full folder path
'''
return folder.split(os.sep)[-1]
Ответ #2:
import os
print os.path.abspath(__file__)
Немного опоздала на вечеринку, но я думаю, что самый краткий путь, чтобы найти имя текущего контекста выполнения будет
current_folder_path, current_folder_name = os.path.split(os.getcwd())
Pathlib может быть использован таким образом, чтобы получить каталог, содержащий текущий скрипт :
import pathlib
filepath = pathlib.Path(__file__).resolve().parent
На вопрос операционной системы 1 использовать.функция getcwd() # получить рабочую Dirи
ОС.оператор chdir(Р'D:\Steam\steamapps\common') # комплект рабочих реж`
Я рекомендую использовать пакет sys.аргумент argv[0] на вопрос 2, потому что представление sys.агду-это неизменный и, следовательно, всегда возвращает текущий файл (путь к объекту модуль) и не зависит от ос.помощью chdir()
. Также вы можете сделать как этот:
import os
this_py_file = os.path.realpath(__file__)
# vvv Below comes your code vvv #
но что фрагмент и sys файлы.аргумент argv[0] не будет работать или будет работать странно, когда составлен PyInstaller, потому что магические свойства не установлены в уровень _главный ___ " и " представление sys.аргумент argv[0]` - это путь в EXE-файл называется (означает, что он становится пострадавшим от рабочего каталога).