2013-10-08 4 views
0

임 꽤 파이썬에 정통하지만, 이것은 나를 위해 꽤 오랫동안 문제가되었습니다.목록 또는 Python의 dict에서 모듈 가져 오기?

나는 내 스튜디오의 아티스트가 누크에서 사용하는 스크립트로 가득 찬 폴더가 있습니다. 그들이 내부에서 액세스 할 수있게하려면, 그들을 통해 가져올 필요가 및 init.py 파일을로드에 읽습니다.

내가 다 적용, 또는 선언 된 목록처럼 찾는 중 하나 글로브 검색을 통해 이러한 값 목록을 만들 수 있도록하고 싶습니다

:

my_list = ['mod_1', 'mod_2', 'mod_3'] 

아직 내가 방법을 찾을 수 없었습니다 이것을 처리 할 수 ​​있습니다.

module = getattr(__import__(package, fromlist=[name]), name) 

또는

module = __import__(var) 

그러나이 방법 모두 내가 가져 오기를하고있는 모듈의 이름을 지정하는 날이 필요합니다 내가 모듈을 찾아 그들을 통해 가져올 변수 이름을 사용할 수 있습니다 알고 있습니다.

capture = glob.glob('/scriptLocation/*.py') 
for i in capture: 
    import i 

또는

my_list = ['mod_1', 'mod_2', 'mod_3'] 
for i in capture: 
    import i 

TIA :

나는이 라인을 따라 뭔가를 할 수있는 방법을 찾고 있어요!

답변

0

이 시도 : (예 16.15)

>>> moduleNames = ['sys', 'os', 're', 'unittest'] 1 
>>> moduleNames 
['sys', 'os', 're', 'unittest'] 
>>> modules = map(__import__, moduleNames)  2 
>>> modules          3 
[<module 'sys' (built-in)>, 
<module 'os' from 'c:\Python22\lib\os.pyc'>, 
<module 're' from 'c:\Python22\lib\re.pyc'>, 
<module 'unittest' from 'c:\Python22\lib\unittest.pyc'>] 
>>> modules[0].version       4 
'2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)]' 
>>> import sys 
>>> sys.version 
'2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)]' 
+0

감사 :

modules = map(__import__, moduleNames) 

link for more 확인! 두 번째 설정으로 나는 사무실에 돌아온다! 건배! – ThisGuy

+0

이 작품을 했습니까? – karthikr

+0

완벽하게 일했습니다! 고맙습니다! 유일한 문제는 어느 인덱스가 어떤 모듈인지를 기억하는 것입니다.하지만 솔직히 말하면, 가져 오기 당 5 줄을 쓰는 것과 비교할 때 문제는 아닙니다. 다시 한 번 감사드립니다! – ThisGuy