【问题标题】:Import all modules from folder, execute function from all of them with known name从文件夹中导入所有模块,从所有已知名称的模块中执行功能
【发布时间】:2020-11-10 00:23:47
【问题描述】:

嗯,我的任务很艰巨,而且我完全被卡住了,就像任何方向一样。

程序应该做什么:

  1. 从文件夹中导入所有模块(名称随机)
  MainScript.py
  modules/
      mod1.py
      mod2.py
      mod3.py
      ...
  1. 执行特定(已知名称,并且在任何地方都相同)函数。

mod1.main()
mod2.main()
mod3.main() ...

据我了解,我应该列出文件夹中的所有文件,然后将它们列出,并为列表导入模块中的每个 [x] 列出并执行脚本。我发现modules[0].main() 仅在modules[0] 没有字符串时才有效,因此,它应该是modules[0]=main 而不是modules[0]='main'。所以我需要以某种方式处理它......但对于import我不知道......

我已经用谷歌搜索过了,只找到https://stackoverflow.com/a/1057534/10289135 而且我想它对我不起作用(我也不明白它是如何工作的,脚本对我不起作用)

有什么想法吗?

【问题讨论】:

  • 添加您尝试过的内容

标签: python python-import python-module


【解决方案1】:

您可以使用以下语法:

从文件名(删除.py)导入*

这是一个通配符导入,它从一个模块中导入所有内容。通过这样做,您不需要像 'filename.blabla' 这样的工作,而只需执行 'blabla'。

【讨论】:

  • 你完全误解了我
【解决方案2】:
import os 
import sys
import importlib
modules = []
for i in os.listdir("C:\\Windows\\path\\to\\your\\modules\\"):
    mod = i
    modules.append(mod)
sys.path.append("C:\\Windows\\path\\to\\your\\modules\\")
for i in modules:
    i = i[:i.find(".")]
    module = importlib.import_module(f"{i}")
    module.main()

【讨论】:

  • 给出错误。 `module.main()`AttributeError: module 'arp' has no attribute 'main'arp.pydef main(): print('arp')
猜你喜欢
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
  • 2017-04-08
  • 1970-01-01
  • 2016-08-27
  • 2011-05-06
相关资源
最近更新 更多