我的代码如下:
proc = subprocess.Popen(["/path/to/program", '-c', '-', ran_opt_get_ap], stdout=subprocess.PIPE) 我想要将"/path/to/program", '-c', '-'提取到一个变量中,这样我就可以很容易地更改它。我已经尝试了几种不同的cmd_here语法,他们给出了各种错误,但是正确的方法是什么呢?下面是我尝试过的一个例子:
cmd_here = "/jffs2/usbflash0/ran/rancli -c -"
proc = subprocess.Popen([cmd_here, ran_opt_get_ap], stdout=subprocess.PIPE) 这只适用于我希望避免的shell=True,我应该使用什么语法?我把它列在一个列表里,但它抱怨说。
发布于 2013-04-10 19:19:39
一些应该可以工作的东西(不过,未经测试):
constant_cmd_part = ["/path/to/program", "-opt", "-more_opt"]
proc = subprocess.Popen(constant_cmd_part + [variable_part],
stdout=subprocess.PIPE)基本上,subprocess.Popen需要一个初始参数,该参数是一个二进制、参数列表...我们通过连接常量部分的列表来构造一个,其中一个与我们的变量部分。
发布于 2013-04-10 19:20:04
您可以使用split函数生成相应的列表:
cmd_here = "/jffs2/usbflash0/ran/rancli -c -"
# split string to a list
args = cmd_here.split()
args.append(ran_opt_get_ap)
proc = subprocess.Popen(args, stdout=subprocess.PIPE)拆分命令的结果:
cmd_here = "/jffs2/usbflash0/ran/rancli -c -"
In [2]: cmd_here.split()
Out[2]: ['/jffs2/usbflash0/ran/rancli', '-c', '-']https://stackoverflow.com/questions/15924294
复制相似问题