2013-06-15 2 views
2

에 방법의 목록을 얻을 경우 내가 파이썬 파일의 목록을 가지고있다. 예를 들어 모든 메소드를 가져와야합니다. inpect를 사용하는 함수파이썬 - 검사 사용하여 지정된 파일 이름 파일

E.g. mylist = ['/path/to/myfle.py'] 

    /path/to/myfle.py 
    def foo(): 
     return 'bar' 
    def bar(): 
     return 'foo' 

파일 이름과 경로가 주어지면 메소드 목록을 어떻게 얻을 수 있습니까?

for file in mylist: 
    ???? 



#The file exists 
ls /home/ubuntu/workspace/ndkt-scraper/src/parsers/pacer/parser_pacer_file.py 
/home/ubuntu/workspace/ndkt-scraper/src/parsers/pacer/parser_pacer_file.py 

strs = '/home/ubuntu/workspace/ndkt-scraper/src/parsers/pacer/parser_pacer_file.py' 
path, _ = os.path.splitext(strs)    #now path is '/path/to/myfile' 
file_name = path.split('/')[-1]    # returns myfile] 
mod = importlib.import_module(file_name, path) 

Traceback (most recent call last): 
    File "/home/ubuntu/workspace/ndkt-scraper/src/crawler.py", line 31, in <module> 
    mod = importlib.import_module(file_name, path) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
ImportError: No module named parser_pacer_file 


parser_pacer_file.py 
def parser_pacer_method(html): 

    data = {'foo':'bar'} 

    return data 

답변

4

사용 importlib를 사용하고 그 수입 모듈에서 기능을 필터링 할 types 모듈을 사용해야합니다.

>>> import os 
>>> import types 
>>> import importlib 
>>> strs = '/path/to/myfle.py' 
>>> path, _ = os.path.splitext(strs)    #now path is '/path/to/myfile' 
>>> file_name = path.split('/')[-1]    # returns myfile 
>>> mod = importlib.import_module(file_name, path) 
>>> funcs = [x for x in dir(mod) if isinstance(getattr(mod,x), types.FunctionType)] 
>>> funcs 
['foo', 'func'] #name of functions 
+0

나는 그것이 있어야하는 것 같다 '모드 = importlib.import_module ('name_file ','/ 경로 /에가/myfle ')' –

+0

모드 = importlib.import_module ('parser_pacer_file.py ','/ 홈/우분투/작업/ndkt -scraper/SRC/파서/페이/') 모드 = importlib.import_module ('parser_pacer_file.py ','/ 홈/우분투/작업/ndkt 스크레이퍼/SRC/파서/페이/') 파일 "은/usr/lib에 /python2.7/importlib/__init__.py "import_module에서 __import __ (이름) ImportError : 모듈이 없습니다 parser_pacer_file.py – Tampa

+0

@ 탬퍼 그냥' 'parser_pacer_file'', 확장명을 사용합니다. –

0

당신은 경로를 사용하여 모듈을 가져 importdir()

+0

파일이 sys.path에있는 경우에만 작동합니다. – Tadeck