首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传入popen参数

传入popen参数
EN

Stack Overflow用户
提问于 2013-04-10 19:14:30
回答 2查看 2K关注 0票数 1

我的代码如下:

代码语言:javascript
复制
proc = subprocess.Popen(["/path/to/program", '-c', '-', ran_opt_get_ap], stdout=subprocess.PIPE) 

我想要将"/path/to/program", '-c', '-'提取到一个变量中,这样我就可以很容易地更改它。我已经尝试了几种不同的cmd_here语法,他们给出了各种错误,但是正确的方法是什么呢?下面是我尝试过的一个例子:

代码语言:javascript
复制
cmd_here = "/jffs2/usbflash0/ran/rancli -c -"
proc = subprocess.Popen([cmd_here, ran_opt_get_ap], stdout=subprocess.PIPE) 

这只适用于我希望避免的shell=True,我应该使用什么语法?我把它列在一个列表里,但它抱怨说。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-10 19:19:39

一些应该可以工作的东西(不过,未经测试):

代码语言:javascript
复制
constant_cmd_part = ["/path/to/program", "-opt", "-more_opt"]
proc = subprocess.Popen(constant_cmd_part + [variable_part],
                        stdout=subprocess.PIPE)

基本上,subprocess.Popen需要一个初始参数,该参数是一个二进制、参数列表...我们通过连接常量部分的列表来构造一个,其中一个与我们的变量部分。

票数 2
EN

Stack Overflow用户

发布于 2013-04-10 19:20:04

您可以使用split函数生成相应的列表:

代码语言:javascript
复制
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)

拆分命令的结果:

代码语言:javascript
复制
cmd_here = "/jffs2/usbflash0/ran/rancli -c -"
In [2]: cmd_here.split()
Out[2]: ['/jffs2/usbflash0/ran/rancli', '-c', '-']
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15924294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档