客户希望脚本(此处为main.py
)具有可配置的合作伙伴模块,
所以将来他可以根据需要添加一个新的partner_x.py
几个自定义更改,并在没有开发人员帮助的情况下将其推送到生产中。
因此我们用这个目录结构编写了一个脚本:
项目目录结构:
├── partners
│ ├── __init__.py
│ ├── partner_1.py
│ ├── partner_2.py
│ ├── ...
│ └── partner_n.py
├── main.py
问题陈述: 他运行一个cron脚本来识别来自合作伙伴的电子邮件以获取合作伙伴名称并使用Cronjob运行我们的脚本。
partner_cron.py
#Downloads Gmail Attachment and decide partner
partner = decide_partner_from_gmail()
python ~/project/main.py partner
但是在我们的主要脚本(即main.py
)中,我们导入了所有合作伙伴模块,即使它一次处理一个合作伙伴的数据。
我正在尝试优化以下main.py
行:
if sys.argv[1] == "partner_1"
from partners import partner_1 as partner
if sys.argv[1] == "partner_2"
from partners import partner_2 as partner
.
.
.
if sys.argv[1] == "partner_n"
from partners import partner_n as partner
将来,客户可能至少有20到30 partners
,因此编写20-30 if-else
来导入特定合作伙伴不是一个好方法。
我认为应该有一些好的方法来动态导入模块而不是逐个导入模块。
我正在寻找这种导入声明:
from partners import module( sys.argv[1] )