0

我相当精通 Python,但这对我来说已经有一段时间了。

我有一个文件夹,里面装满了我工作室中的艺术家在 Nuke 中使用的脚本。为了使它们可以从内部访问,我需要通过 Nuke 在加载时读取的 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

蒂亚!

4

1 回答 1

0

尝试这个:

modules = map(__import__, moduleNames)

验证此链接以获取更多信息:(示例 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)]'
于 2013-10-08T21:15:06.420 回答