Если вы хотите определить местоположение основного скрипта, даже из кода, который может выполняться в импортированном модуле, вам нужно использовать 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")