如何解决在运行时生成 args 并将其传递给使用 argparse 的第二个脚本
我有一个使用 argparse 解析命令行参数的脚本 (A),我正在编写脚本 (B),它将在运行时为脚本 A 生成各种参数组合并调用 A 的 main 方法。
我无法修改脚本 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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。