gpt4 book ai didi

python subprocess run 适用于单个字符串但不适用于字符串列表

转载 作者:行者123 更新时间:2023-12-05 01:34:47 24 4
gpt4 key购买 nike

我正在尝试使用 subprocess 模块中的 run 方法从我的 Python 脚本启动一个带有命令行选项的命令行程序。

我的命令被定义为指定程序和选项的字符串列表,如下所示(其中 pheno_fpconstruction_fp 是表示我系统中文件路径的字符串, exe 是一个字符串,表示我正在运行的程序的文件路径):

    step1_cmd = [exe, 
"--step 1",
"--p " + pheno_fp,
"--b 1000",
"--o " + construction_fp + "dpw_leaveout"]

不工作 - 当我尝试以下操作时,我要运行的程序已启动,但我指定的命令被错误解释,因为程序退出时出现错误“指定输出文件路径”带有 --o 标志”:

    test1 = subprocess.run(step1_cmd)

工作 - 当我尝试以下操作时,程序正确执行,这意味着所有参数都按预期解释:

    test1 = subprocess.run(" ".join(step1_cmd), shell=True)

如果我对文档的理解正确,前一种方法是推荐的用法,但我不明白为什么它不起作用。我很确定它的格式与文档中的示例相同,所以我有点难过。有什么想法吗?

最佳答案

将每个参数与其值分开,如下所示:

step1_cmd = [exe, 
"--step",
"1",
"--p",
str(pheno_fp), # if it isn't a string already
"--b",
"1000",
"--o",
str(construction_fp) + "dpw_leaveout"
]

因为传递参数列表时,每个部分都用空格分隔,包括选项和它们的值

关于python subprocess run 适用于单个字符串但不适用于字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63582328/

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