我有一个python模块问题:
我需要编写一个脚本来获取各种硬件的输出,然后将它们存储在数据库中。我知道当前的硬件,但我不知道将来会添加任何其他硬件。对不起,让我更具体一点。
该脚本将从连接到配电板的硬件模块中检索电源信息。这些模块获取原始传感器信息并通过tcp / ip使其可用。我已将函数编写到测试脚本中,询问硬件模块并收集信息。问题是需要在需要使用不同硬件模块的地方部署,而不仅仅是我所知道的那些。所有的硬件模块都会提供相同的信息,但他们都会采用不同的方式。有些使用telnet或ssh,有些提供网页,有些提供和xml输出,有些会使用snmp。我想创建一个机制,可以为新设备编写python模块,该设备可以提取信息并以标准方式将其提供给脚本,以便脚本可以填充数据库并且生活正常进行。
因此,每次加入一个新的硬件模块类型,然后将其包装在'如果'语句等...是否有一种机制将该功能放入可以动态添加到脚本的模块中。我想是一个插件类型的机制。但我认为这不太合适。
对于使用或实施此类内容的地方的任何建议或指示将不胜感激。
答案 0 :(得分:0)
您可以在代码中使用导入功能。根据您的Python版本,尝试importlib(在Python 2.7中添加)或__import__
函数。
您可以为要支持的每个硬件设备创建插件。然后,每个这样的插件都可以在某处注册(主模块路径放在环境变量或Windows注册表中的已知路径)。然后,您的代码将检查该位置(定期,在启动时 - 根据您的需要)并加载找到的每个插件。您还可以使用distutils并将插件打包为egg
个包。
请注意,虽然当您从Python源代码运行时它运行良好,但如果您计划使用PyInstaller或Py2exe构建可执行文件,则会变得更加复杂。