Python, найдите файл в том же каталоге - PullRequest
2 голосов
/ 22 августа 2009

Допустим, у меня есть файлы a.py и b.txt в одном каталоге. Я не могу garuntee , где этот каталог, но я знаю, что b.txt будет в том же каталоге, что и a.py. a.py нужен доступ к b.txt, как мне найти путь к b.txt? Что-то вроде «./b.txt» не будет работать, если пользователь запускает программу из каталога, отличного от того, в котором он был сохранен.

Ответы [ 2 ]

5 голосов
/ 22 августа 2009

Если вы хотите определить местоположение основного скрипта, даже из кода, который может выполняться в импортированном модуле, вам нужно использовать sys.argv[0] вместо __file__. (sys.argv[0] - это всегда путь к основному сценарию; см. http://docs.python.org/library/sys.html#sys.argv)

Если вам нужно местоположение текущего модуля, даже если он был импортирован каким-либо другим сценарием, вы должны использовать __file__, как говорит Мартин.

Вот способ использования sys.argv[0]:

import os, sys
dirname, filename = os.path.split(os.path.abspath(sys.argv[0]))
print os.path.join(dirname, "b.txt")
5 голосов
/ 22 августа 2009

Используйте переменную __file__:

os.path.join(os.path.dirname(__file__), "b.txt")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...