gpt4 book ai didi

python - 如何通过子进程将 argparse 中的 args 提供给外部程序调用

转载 作者:行者123 更新时间:2023-12-05 08:10:37 25 4
gpt4 key购买 nike

在任务中,我需要通过 python 调用在终端上运行的外部程序。这个外部程序有很多位置参数和可选参数。

这是目前开发的示例代码:

def multi_character_parameter():

parser = argparse.ArgumentParser()

parser.add_argument('b',
help="Execute tests with browser 'firefox' or 'chrome', or 'ALL")
parser.add_argument('C', help="Execute tests in cloud 'aws' or 'azure'")
parser.add_argument(
'c', help="Clear output and temp directory before executing tests")
parser.add_argument('d', help="Check syntax for test data")
parser.add_argument("--upper-case", default=False, action="store_true")
...
args = parser.parse_args()

def my_external_program():
subprocess.call(["external_program"])

有人可以建议:

  1. 如何将这些参数提供给通过子进程调用的external_program

即在运行 python script.py some_args 时,这些 some_args 将提供给 external_program 函数作为 external_program some_args 执行>.

  1. 如果代码中指定的 args 需要在代码的其他部分使用,那么构建代码的更好方法是什么。

最佳答案

设置变量 args 后,您可以使用点表示法访问任何参数。

我已经编辑了您的代码来证明这一点:

#!/usr/bin/env python3

import argparse
import subprocess

def multi_character_parameter():

parser = argparse.ArgumentParser()

parser.add_argument('--b',
help="Execute tests with browser 'firefox' or 'chrome', or 'ALL",
required=False,
default=False)
parser.add_argument('--C', help="Execute tests in cloud 'aws' or 'azure'",
required=False, default=False)
parser.add_argument(
'--c', help="Clear output and temp directory before executing tests",
required=False, default=False)
parser.add_argument('--d', help="Check syntax for test data", required=False, default=False)
parser.add_argument("--upper-case", action="store_true", required=False, default=False)
args = parser.parse_args()
return args

def my_external_program(args):
print(args)
b = str(args.b)
C = str(args.C)
c = str(args.c)
d = str(args.d)
upper_case = str(args.upper_case)
subprocess.call(["echo", b,C,c,d,upper_case ])


if __name__ == "__main__":
args = multi_character_parameter()
my_external_program(multi_character_parameter())

现在运行它 chmod +x test.py

./test.py

stdout 用于显示对 args 的访问(外部程序被替换为 echo 作为程序:

Namespace(b=False, C=False, c=False, d=False, upper_case=False)
False False False False False

关于python - 如何通过子进程将 argparse 中的 args 提供给外部程序调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72722697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com