在运行时生成 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.
我有一个使用 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 参数?
我找到的最接近的是
如果可能我宁愿不使用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.