문제
동일한 디렉토리에있는 데이터 파일을로드해야하므로 모듈에서 가져온 디렉토리를 어떻게 찾을 수 있습니까?
편집하다:
몇 가지 답변 결합 :
module_path = os.path.dirname(imp.find_module(self.__module__)[1])
내가 원하는 것을 얻었다
해결책
지정하여 디렉토리를 모듈하려는 경우 module_name
문자열로 즉, 실제로 모듈을 가져 오지 않고 그런 다음 사용하십시오
def get_dir(module_name):
import os,imp
(file, pathname, description) = imp.find_module(module_name)
return os.path.dirname(pathname)
print get_dir('os')
산출:
C:\Python26\lib
foo.py
def foo():
print 'foo'
Bar.py
import foo
import os
print os.path.dirname(foo.__file__)
foo.foo()
산출:
C:\Documents and Settings\xxx\My Documents
foo
다른 팁
이것은 작동합니다 :
yourmodule.__file__
모듈을 찾으려면 객체가 가져 왔습니다.
myobject.__module__
모듈 파일의 경로가 있습니다 module.__file__
. 당신은 그것을 함께 사용할 수 있습니다 os.path.dirname
디렉토리를 얻으려면.
RE 모듈 사용 예를 사용합니다.
>>> import re
>>> path = re.__file__
>>> print path
C:\python26\lib\re.pyc
>>> import os.path
>>> print os.path.dirname(os.path.abspath(path))
C:\python26\lib
모듈이 현재 작업 디렉토리 ( "CWD")에 있으면 상대 경로 만 얻게됩니다. foo.py
. 모듈 경로가 사용되기 전에 CWD가 변경되는 경우를 대비하여 즉시 절대 경로를 얻는 습관이됩니다.
제휴하지 않습니다 StackOverflow