如何使用python在一个管道中执行一堆命令?

时间:2015-06-26 08:57:43

标签: shell python-2.7 command-line command subprocess

我有关于在python中执行命令的问题。 问题是: 在我们公司,我们购买了可以用于GUI或命令行界面的商业软件。我被分配了一个尽可能自动化的任务。首先,我考虑使用CLI而不是GUI。但后来我遇到了执行多个命令的问题。 现在,我想用参数执行该软件的CLI版本并继续在其菜单中执行命令(我不是说再次使用args执行脚本。我想,一旦初始命令执行,它将打开菜单,我想在里面执行soft命令Soft的菜单在背景)。然后将输出重定向到变量。 我知道,我必须使用PIPE的子进程,但我没有管理它。

import subprocess
proc=subprocess.Popen('./Goldbackup -s -I -U', shell=True, stdout=subprocess.PIPE)
output=proc.communicate()[0]
proc_2 = subprocess.Popen('yes\r\n/dir/blabla/\r\nyes', shell=True, stdout=subprocess.PIPE) 
# This one i want to execute inside first subprocess

1 个答案:

答案 0 :(得分:0)

如果要通过其stdin将命令传递给子进程,请设置stdin=PIPE

#!/usr/bin/env python
from subprocess import Popen, PIPE

proc = Popen('./Goldbackup -s -I -U'.split(), stdin=PIPE, stdout=PIPE,
             universal_newlines=True)
output = proc.communicate('yes\n/dir/blabla/\nyes')[0]

请参阅Python - How do I pass a string into subprocess.Popen (using the stdin argument)?