python - Python:动态运行文件夹中所有python脚本中的所有函数
问题描述
main_folder/
__init__.py
sub_folder1/
__init__.py
run_all_functions.py
sub_folder2/
__init__.py
script1.py
script2.py
script3.py
脚本1.py
def something():
....
def something2():
....
脚本2.py
def example():
....
def example2():
....
脚本3.py
def example3():
....
想检查是否有方法可以在文件夹 2 中的不同脚本中运行所有函数,并将它们动态合并到文件夹 1 中的 run_all_functions.py 中。在不久的将来,我可能会在文件夹 2 中添加更多带有函数的脚本。
解决方案
如果您使用脚本向目录中的run_all()
每个文件添加入口点函数.py
,则可以加载所有这些文件并调用它们各自的run_all()
函数。
这里做个小示范,调整一下DIR
。
import importlib.util
import pathlib
DIR = '/tmp/test'
for pyfile in pathlib.Path(DIR).glob('*.py'): # or perhaps 'script*.py'
spec = importlib.util.spec_from_file_location(f"{__name__}.imported_{pyfile.stem}" , pyfile)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
module.run_all()
如果没有 per module run_all()
,您必须使用某种自省来查找要运行的所有函数。
推荐阅读
- windows - bash:导出:'PATH .....':每次打开 bash 时都不是有效的标识符消息
- html - 电子邮件中的表格未在 MS Outlook 中居中
- php - 更新记录错误:无效使用组功能更新以前的所有数据
- c - G-WAN C 函数 xbuf_trunclen() 和 xbuf_truncptr()
- reactjs - 使用 null 反应默认道具值
- pdf - 自动合同创建
- ios - 使 getNotificationSettings 返回而不是使用完成块
- ajax - Github证书问题
- ruby-on-rails - Capybara poltergeist 不执行 mdc webpack application.js 文件
- r - mutate_impl(.data, dots) 中的错误:“by”参数中的错误登录