Я хочу получить путь к текущему каталогу, в котором выполняется файл .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__)
возвращается пустой?
os.path.dirname(filename) + os.path.basename(filename) == filename
потому что разделитель каталогов отсутствует. У нас скорее есть:os.path.join(os.path.dirname(filename), os.path.basename(filename)) == filename
__file__
расширяется до имени текущего файла, поэтому вы можете использовать дословную копию кода из этого ответа.можно использовать также так:
источник
источник
os.path.realpath(__file__)
вернуть abspath текущего скрипта; os.path.split (abspath) [0] возвращает текущий каталогисточник
Вы также можете использовать этот способ
источник