Ответ 1
os.path.realpath(__file__)
предоставит вам путь к текущему файлу, разрешая любые символические ссылки в пути. Это отлично работает на моем mac.
Duplicate:
В Python, как мне получить путь и имя файла, который в настоящее время выполняется?
Как мне получить путь к Python script, в котором я запущен? Я делал dirname(sys.argv[0])
, однако на Mac я получил только имя файла - не полный путь, как в Windows.
Независимо от того, откуда запускается мое приложение, я хочу открыть файлы, относящиеся к моим файлам script.
os.path.realpath(__file__)
предоставит вам путь к текущему файлу, разрешая любые символические ссылки в пути. Это отлично работает на моем mac.
7.2 погружения в Python: Поиск пути.
import sys, os
print('sys.argv[0] =', sys.argv[0])
pathname = os.path.dirname(sys.argv[0])
print('path =', pathname)
print('full path =', os.path.abspath(pathname))
import os
print os.path.abspath(__file__)
Принятое решение для этого не будет работать, если вы планируете скомпилировать свои скрипты с помощью py2exe. Если вы планируете это сделать, это функциональный эквивалент:
os.path.dirname(sys.argv[0])
Py2exe не предоставляет переменную __file__
. Для справки: http://www.py2exe.org/index.cgi/Py2exeEnvironment
Если у вас есть относительный путь (в данном случае он выглядит как ./
), вы можете открывать файлы по отношению к вашим файлам script. Я использую Perl, но может применяться одно и то же общее решение: я разделяю каталог на массив папок, затем pop
от последнего элемента (script), затем push
(или для вас, append
) на то, что я хочу, а затем снова объединить их вместе, и БАМ! У меня есть рабочий путь, который указывает точно, где я ожидаю, что он будет указывать, относительный или абсолютный.
Конечно, есть более совершенные решения, как опубликовано. Я просто вроде как.