我需要在python 2.7中的bakground中执行命令行。我需要解雇并忘记。
这是命令:
cmd = "/usr/local/bin/fab -H %s aws_bootstrap initial_chef_run:%s,%s,%s -w" % (...)
如何使用子流程模块?
e.g。是吗
subprocess.call([cmd])
or
subprocess.call(["/usr/local/bin/fab", "-H %s aws_bootstrap initial_chef_run:%s,%s,%s -w"])
我不知道如何使用该列表。或者列表中的每个元素都是一个空格。
由于
答案 0 :(得分:2)
每个由空格分隔的东西都是列表的单独实体
然而, subprocess.call
正在阻止
subprocess.popen
是非阻止的
cmd = ["/usr/local/bin/fab", "-H",var1,"aws_bootstrap initial_chef_run:%s,%s,%s"%(var2,var3,var4), "-w"]
subprocess.popen(cmd) # dopnt wait just keep going
#or
subprocess.call(cmd) # wait until the command returns
但是,您可以将命令作为一个大字符串传递
cmd = "/usr/local/bin/fab -H %s aws_bootstrap initial_chef_run:%s,%s,%s -w" % (...)
subprocess.call(cmd)
一般来说,这个方法(传递单个字符串)由于某种原因而不受欢迎,这个原因从未被充分解释过我
答案 1 :(得分:0)
我最近使用它来激活perl脚本,如下所示:
var = "C:\Users\user\Desktop"
retcode = subprocess.call(["perl", '.\hgncDL.pl',var])
答案 2 :(得分:0)
在以下代码中定义hParam
和runParams
,您就可以了:
hParam = 'hParam'
runParams = (a,b,c)
args = ('/usr/local/bin/fab', '-H', hParam, 'aws_bootstrap', 'initial_chef_run:%s,%s,%s' % runParams, '-w')
subprocess.Popen(args)
如何使用<any python module>
模块?
https://docs.python.org是一个很好的起点
特别是,subprocess
模块的文档可用here
由于低声誉造成的限制,我无法在此答案的后面为每个案例提供直接链接。每次我将引用&#39; docs&#39;时,请在模块的文档中查找。
我需要在python 2.7的后台执行一个命令行。我需要解雇并忘记
考虑subprocess.Popen(args)
。注意资本&#39; P&#39;。
有关详细信息,请参阅文档
subprocess.call(args)
以类似的方式工作,但它会阻塞,直到命令完成。如文档中所述:
运行args描述的命令。 等待命令完成,然后返回returncode属性。
如何使用args
参数的序列形式?
这包含在&#34;经常使用的参数&#34;文档部分:
所有调用都需要args,它应该是一个字符串或一系列程序参数。通常优选提供一系列自变量,因为它允许模块处理任何所需的转义和引用参数(例如,允许文件名中的空格)。
此外,以字符串形式传递args
有其局限性:
如果传递单个字符串,则shell必须为True,否则字符串必须简单地命名要执行的程序而不指定任何参数。
尽管有上述限制,subprocess.Popen('cmd.exe /?')
对我有用。 Win7,Python 2.7.8 64位。