Как мне узнать путь к скрипту Python, в котором я работаю?

Дубликат: как
в Python получить путь и имя файла, который выполняется в данный момент?

Как мне узнать путь к скрипту Python, в котором я работаю? Я делал это dirname(sys.argv[0]), однако на Mac я получаю только имя файла, а не полный путь, как в Windows.

Независимо от того, откуда запущено мое приложение, я хочу открывать файлы, относящиеся к моему файлу (файлам) сценария.

Ответов (5)

7.2 из Dive Into Python: Finding the Path .

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__)

Используйте это, чтобы получить путь к текущему файлу. Это разрешит любые символические ссылки в пути.

import os

file_path = os.path.realpath(__file__)

Это отлично работает на моем Mac.

Если у вас есть даже относительный путь (в данном случае он кажется ./ ), вы можете открывать файлы, относящиеся к вашему файлу (файлам) сценария. Я использую Perl, но может применяться то же общее решение: я разбиваю каталог на массив папок, затем pop убираю последний элемент (скрипт), затем push (или для вас append ) на все, что хочу, и затем снова объединяю их вместе , и БАМ! У меня есть рабочий путь, который указывает именно туда, куда я ожидаю, относительный или абсолютный.

Конечно, есть и лучшие решения, как написано. Мне просто нравится моя.

Принятое решение для этого не сработает, если вы планируете компилировать свои скрипты с помощью py2exe. Если вы планируете это сделать, это функциональный эквивалент:

os.path.dirname(sys.argv[0])

Py2exe не предоставляет __file__ переменную. Для справки: http://www.py2exe.org/index.cgi/Py2exeEnvironment