【发布时间】:2021-09-21 20:55:41
【问题描述】:
我正在使用 subprocess 来使用命令行并为另一个脚本传递参数。我有一个参数列表,我把它做成了一个字符串:
import subprocess as sp
arg_list = ["arg1", "arg2", "arg3"]
arg_string = " ".join(arg_list)
现在这适用于以下输出arg1 arg2 arg3。问题是,当我将它传递给命令行时,它只将其识别为一个参数。
sp.call(["test_file.tcl", arg_string])
** 注意:我使用call 只是因为这个脚本需要是 Python 3.4
我知道这只是一个参数,因为将以下内容添加到 .tcl 文件中:
[lindex $argv 0]
[lindex $argv 1]
[lindex $argv 2]
输出是:
arg1 arg2 arg3
. (These are blank lines not dots)
.
这是正确的方法吗?我怎样才能使这项工作真正在 3 个参数而不是 1 个参数上得到识别?
** 答案:
添加shell=True 允许传递字符串而不是列表。
sp.call("test_file.tcl {0}".format(arg_string), shell=True)
【问题讨论】:
-
这就是将字符串传递给
call方法的想法。 -
help(subprocess.call)在 python 交互式 shell 中会向您展示如何正确地做到这一点。 -
谢谢,我去看看
标签: python python-3.x string command-line arguments