2

Pythonファイルのリストがあります。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

2 に答える 2

5

importlibパスを使用してモジュールをインポートするために使用し、次に module を使用し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
于 2013-06-15T07:31:22.243 に答える
0

使用する必要がありimportdir()

于 2013-06-15T07:31:11.727 に答える