gpt4 book ai didi

python - subprocess.Popen 可选参数

转载 作者:太空宇宙 更新时间:2023-11-03 16:44:55 25 4
gpt4 key购买 nike

我正在创建一个 python 脚本,它使用用户给出的参数来启动可执行文件:

parser = argparse.ArgumentParser()
parser.add_argument('-c', '--stringC', dest="stringC", help="stringC", type=str)
parser.add_argument('-f', '--stringF', dest="stringF", help="stringF", type=str)
parser.add_argument('-o', '--stringO', dest="stringO", help="stringO", type=str)
parser.add_argument('-d', '--stringD', dest="stringD", help="stringD", type=str)
parser.add_argument('-s', '--stringS', dest="stringS", help="stringS", type=str)
args = parser.parse_args()

command = 'executable-location'
statement = [command, '-c', stringC, '-f', stringF, '-o', stringO, '-d', stringD, '-s', stringS]
p = subprocess.Popen(statement)

问题在于,其中一些参数对于可执行文件来说是可选的,如果未提供,程序将使用自己的默认值。因此,尽管我有时想使用默认值,但目前所有参数都已使用。

理想情况下,我只想为可执行文件提供已解析的参数。我已经尝试过了

statement = [command, args]
p = subprocess.Popen(statement2)

p = subprocess.Popen(args)

但它给了我以下错误:

TypeError: 'Namespace' object is not iterable

希望有人能帮助我解决这个问题。提前致谢。

最佳答案

如果可行的话,最简单的解决方案是将程序默认值合并到解析器中。

# For example
parser.add_argument('-f', '--stringF', dest="stringF",
help="stringF", type=str,
default="-f's default)

那么你就不必担心是否在参数列表中使用args.stringF

否则,您需要一次构建一个命令列表。

statement = [command]
if args.stringF is not None:
statement += ["-f", args.StringF]
# etc

关于python - subprocess.Popen 可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36405403/

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