Вопрос-Ответ

How do I get the full path of the current file's directory? [duplicate]

Как мне получить полный путь к каталогу текущего файла?

Как мне получить путь к каталогу текущего файла? Я пытался:

>>> os.path.abspath(__file__)
'C:\\python27\\test.py'

Но я хочу:

'C:\\python27\\'
Переведено автоматически
Ответ 1

Специальная переменная __file__ содержит путь к текущему файлу. Исходя из этого, мы можем получить каталог, используя либо pathlib, либо os.path модуль.

Python 3

Для каталога запускаемого скрипта:

import pathlib
pathlib.Path(__file__).parent.resolve()

Для текущего рабочего каталога:

import pathlib
pathlib.Path().resolve()

Python 2 и 3

Для каталога запускаемого скрипта:

import os
os.path.dirname(os.path.abspath(__file__))

Если вы имеете в виду текущий рабочий каталог:

import os
os.path.abspath(os.getcwd())

Обратите внимание, что перед и после file это два символа подчеркивания, а не только один.

Также обратите внимание, что если вы работаете в интерактивном режиме или загрузили код не из файла (например, базы данных или онлайн-ресурса), __file__ может быть не задан, поскольку нет понятия "текущий файл". Приведенный выше ответ предполагает наиболее распространенный сценарий запуска скрипта python, который находится в файле.

Ссылки


  1. pathlib в документации python.

  2. os.path - Python 2.7, os.path - Python 3

  3. os.getcwd - Python 2.7, os.getcwd - Python 3

  4. что означает переменная __file__?

Ответ 2

Использование Path from pathlib является рекомендуемым способом начиная с Python 3:

from pathlib import Path
print("File Path:", Path(__file__).absolute())
print("Directory Path:", Path().absolute()) # Directory of current working directory, not __file__

Примечание: При использовании Jupyter Notebook, __file__ не возвращает ожидаемое значение, поэтому Path().absolute() должен быть использован.

Ответ 3

В Python 3.x я делаю:

from pathlib import Path

path = Path(__file__).parent.absolute()

Объяснение:


  • Path(__file__) это путь к текущему файлу.

  • .parent выдает вам каталог, в котором находится файл.

  • .absolute() предоставляет вам полный абсолютный путь к нему.

Использование pathlib - это современный способ работы с путями. Если вам это понадобится позже в виде строки по какой-либо причине, просто сделайте str(path).

Ответ 4

Попробуйте это:

import os
dir_path = os.path.dirname(os.path.realpath(__file__))
python