Python: не удается получить текущий путь к скрипту

Я новичок в программировании и в Python. Я использую Mac OSX, пытаюсь работать с PyCharm. Я просмотрел это, this, это и несколько других.

Но я не могу получить путь к текущему запущенному файлу. Если я использую os.getcwd(), я получаю

'/Users/AlanH/Python'

На самом деле полный путь к файлу:

'/Users/AlanH/Python/Exercises/PythonBasics/starthere.py'

Поэтому я не понимаю, почему это не работает.

Если я попытаюсь использовать sys.path[0], он откроет путь, который приведет меня к моей библиотеке, а затем перейдет к Enthought (не знаю почему, хотя я использую дистрибутив Anaconda).

Я мог бы продолжать и говорить обо всех возможных решениях, которые пробовал, но ничего не работает. Все, что я хочу, - это получить точный путь к текущему запущенному файлу. Так что либо

'/Users/AlanH/Python/Exercises/PythonBasics/starthere.py'

или это

'/Users/AlanH/Python/Exercises/PythonBasics'

Сделаю.

Может кто-нибудь помочь?


person TheRealFakeNews    schedule 20.09.2015    source источник
comment
См. stackoverflow.com/a/51523/3166303   -  person leeor    schedule 20.09.2015
comment
Что вы получаете, когда используете __file__?   -  person Anand S Kumar    schedule 20.09.2015
comment
@leeor Если я воспользуюсь этим решением, он не укажет правильный путь. Это дает '/Users/AlanH/Python/starthere.py', чего я не понимаю, потому что такого файла нет в моей папке Python   -  person TheRealFakeNews    schedule 20.09.2015
comment
@AnandSKumar Я не понимаю, как это использовать. Я буквально набираю __file__?   -  person TheRealFakeNews    schedule 20.09.2015
comment
@AlanH пока сделай print(__file__), чтобы протестировать.   -  person Anand S Kumar    schedule 20.09.2015
comment
@AnandSKumar Я буквально набрал print(__file__) и вернулся name '__file__' is not defined   -  person TheRealFakeNews    schedule 20.09.2015
comment
сделайте это в скрипте, а не непосредственно в терминале Python   -  person Anand S Kumar    schedule 20.09.2015


Ответы (1)


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

Проведено локальное тестирование со следующим результатом:

eb@cube ~/Share $ python stackoverflow/path.py
/home/eb/Share/stackoverflow/path.py
person Eirik Birkeland    schedule 20.09.2015
comment
@ErikBirkeland Вы буквально, дословно набираете __file__? Или это представление имени вашего файла? - person TheRealFakeNews; 20.09.2015
comment
да. __file__ - это своего рода переменная, содержащая имя файла, по крайней мере, так и должно быть. - person Eirik Birkeland; 20.09.2015
comment
Посмотрите, возможно, здесь: stackoverflow.com/ вопросы / 7783308 / - person Eirik Birkeland; 20.09.2015
comment
Я тестировал вышеперечисленное на Python 2.7.4 и 3.4.0 в Linux, а также на 2.7.3 в Windows 7. Хм. - person Eirik Birkeland; 20.09.2015
comment
Можете ли вы попробовать это: print(os.path.dirname(os.path.abspath(__file__))) - person Eirik Birkeland; 20.09.2015