문제

동일한 디렉토리에있는 데이터 파일을로드해야하므로 모듈에서 가져온 디렉토리를 어떻게 찾을 수 있습니까?

편집하다:

몇 가지 답변 결합 :

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가 변경되는 경우를 대비하여 즉시 절대 경로를 얻는 습관이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top