python - 一个脚本运行多个脚本
问题描述
我正在尝试简化需要运行多个单独脚本的工作流程。到目前为止,我已经能够编写一个运行其他脚本的脚本,但是我有一个似乎无法解决的问题。每个子脚本都需要一个文件路径,并且路径中的一个参数需要根据运行脚本的人员进行更改。目前,我必须打开每个子脚本并手动更改此参数。
是否可以将此参数设置为父脚本中的变量,然后可以将其传递给下标?因此,它只需要设置一次,并且不再需要在每个子脚本中更新它。
到目前为止我有......
import os
def driver(path: str):
path_base = path
path_use = os.path.join(path_base, 'docs', 'analysis', 'forecast')
file_cash = os.path.join(path_use, 'cash.py')
file_cap = os.path.join(path_use, 'cap.py')
exec(open(file_cash).read())
exec(open(file_cap).read())
return
if __name__ == '__main__':
driver(path=r'c:\users\[username]')
我想设置path=r'c:\users\[username]'
然后将其传递给cash.py
and cap.py
。
解决方案
而不是试图复制import
语句的行为,您应该直接导入这些下标并传递您需要它们用作函数/方法参数的值。要从特定路径导入脚本,您可以使用importlib.import()
,如下所示:
main.py
import os
def driver(path: str):
path_use = os.path.join(path, 'docs', 'analysis', 'forecast')
file_cash = os.path.join(path_use, 'cash.py')
file_cap = os.path.join(path_use, 'cap.py')
importlib.import(file_cash)
importlib.import(file_cap)
cash.cash("some_arg")
cap.cap("some_other_arg")
if __name__ == '__main__':
driver(path=r'c:\users\[username]')
推荐阅读
- python - 在while循环外只执行一次代码
- python - 为什么我的 python 输入函数要求输入两次?
- reactjs - 如何在播放按钮后安排下一个按钮
- r - R Data Wrangling:混乱的限定符
- ruby-on-rails - 将参数附加到 docker compose test service 命令
- c# - 如何在 Startup.cs 的 Configure 方法中获取 app.UseExceptionHandler 方法的当前文化?
- debugging - 如何在仅创建菜单的 onOpen 上重现“您无权执行该操作”
- ios - 上传图像数据然后引用对象 Swift 组合模式?
- javascript - 如何从不同的文件打开模式
- javascript - 了解什么触发移动到 javascript 承诺链的下一个 .then()