2015-10-14 65 views
-1

我是新来的蟒蛇,在执行shell命令,我得到一个输出,例如说:如何使用Python在bash屏幕上捕获特定单词?

[T @ CentOS的配置] $显示图像

REPOSITORY TAG的形象创造了ID

AP -11aug - 最新最新c070f30df2bd9周前

你好世界最新af340544ed629周前

其中存储库中,TAG,IMAGE,ID和创建的列标头。

现在,我想复制说,例如文本ap-11aug-latest这是在第二行和第一列,我怎样才能捕捉它使用Python?空格是分隔符。

我基本上想捕捉那个位置的文本,即第二行和第一列。

回答

0

这个小小的代码片段将在子进程中执行你的命令,并且会给你捕获标准输出的可能性。

import subprocess 

def get_stdout(cmd): 
    p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 
    result = [] 
    line = p.stdout.readline() 
    while line != '': 
     tag = line.split(' ')[0] 
     print(tag) 
     line = p.stdout.readline() 
get_stdout('show images') 

如果你只是想第二行的第一列,你可以这样做:

import subprocess 

def get_stdout(cmd): 
    p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 
    result = [] 
    p.stdout.readline() # reads the first line 
    line = p.stdout.readline() # reads the second line 
    tag = line.split(' ')[0] 
    print(tag) 
get_stdout('show images') 
+0

谢谢!这段代码检索第一列。输出将是:REPOSITORY ap-11aug-latest hello-world现在,我需要第二行的文本。所以,我将检索第一列第二行上的文本。在这种情况下,我应该调整以仅检索“ap-11aug-latest”? – Tejas

+0

我编辑了我的答案 –

+0

非常感谢!为我工作! – Tejas