在运行时生成 args 并将其传递给使用 argparse 的第二个脚本

Generating and passing args at runtime to a second script that uses argparse

我有一个使用 argparse 解析命令行参数的脚本 (A),我正在编写脚本 (B),它将在运行时为脚本 A 生成各种参数组合并调用 A 的主要方法。

我无法修改脚本 A.

脚本 A

import argparse

def main():
    args = code_to_add_args().parse_args()
    # does stuff with args

脚本 B

import argparse
from A import main

if __name__ == "__main__":
    my_cli_args = code_to_add_args().parse_args()
    new_args_generated_at_runtime = generate_args()
    main() # pass new_args_generated_at_runtime into A to be parsed by argparse

如何在不修改脚本 A 的情况下使用脚本 B 向脚本 A 提供 CLI 参数?

我找到的最接近的是,但它的答案需要修改脚本A.

如果可能我宁愿不使用subprocess.call()

hpaulj 的评论让我找到了一个有效的解决方案。

我清除了 sys.argv,然后将我的参数附加到它:

脚本 A

import argparse

def main():
    args = code_to_add_args().parse_args()
    # does stuff with args

脚本 B

import argparse
from A import main

if __name__ == "__main__":
    my_cli_args = code_to_add_args().parse_args()

    new_args_list = generate_list_of_args()
    # Keep the first element of sys.argv to retain the name of the script
    sys.argv = [sys.argv[0]]

    for param in new_args_list:
        sys.argv.append(param)

    main() # Now new args have been added to sys.argv, argparse in script A will use them.