Os.path.dirname(__ file__) возвращает пустое
Я хочу получить путь к текущему каталогу, в котором выполняется файл .py.
Например, простой файл D:\test.py
с кодом:
import os
print os.getcwd()
print os.path.basename(__file__)
print os.path.abspath(__file__)
print os.path.dirname(__file__)
Странно, что вывод:
D:\
test.py
D:\test.py
EMPTY
Я ожидаю таких же результатов от getcwd()
и path.dirname()
.
Учитывая os.path.abspath = os.path.dirname + os.path.basename
, почему
os.path.dirname(__file__)
возвращается пустой?
Ответы
Ответ 1
Потому что os.path.abspath = os.path.dirname + os.path.basename
не выполняется. мы скорее имеем
os.path.dirname(filename) + os.path.basename(filename) == filename
Оба dirname()
и basename()
разделяют только переданное имя файла на компоненты, не принимая во внимание текущий каталог. Если вы хотите также рассмотреть текущий каталог, вы должны сделать это явно.
Чтобы получить имя dirname абсолютного пути, используйте
os.path.dirname(os.path.abspath(__file__))
Ответ 2
можно также использовать:
dirname(dirname(abspath(__file__)))
Ответ 3
print(os.path.join(os.path.dirname(__file__)))
Вы также можете использовать этот способ
Ответ 4
os.path.split(os.path.realpath(__file__))[0]
os.path.realpath(__file__)
возвращает abspath текущего script; os.path.split(abspath) [0] возвращает текущий каталог
Ответ 5
import os.path
dirname = os.path.dirname(__file__) or '.'
Ответ 6
имя ' файл ' не определено, это дает такую ошибку