首页 > 解决方案 > 一个脚本运行多个脚本

问题描述

我正在尝试简化需要运行多个单独脚本的工作流程。到目前为止,我已经能够编写一个运行其他脚本的脚本,但是我有一个似乎无法解决的问题。每个子脚本都需要一个文件路径,并且路径中的一个参数需要根据运行脚本的人员进行更改。目前,我必须打开每个子脚本并手动更改此参数。

是否可以将此参数设置为父脚本中的变量,然后可以将其传递给下标?因此,它只需要设置一次,并且不再需要在每个子脚本中更新它。

到目前为止我有......

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.pyand cap.py

标签: python

解决方案


而不是试图复制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]')

推荐阅读