2015-09-26 56 views
0

从外部命令的输出。虽然我在蟒蛇是新的,我写了数组列表,我想打印的BIOS信息数组列表?如何在这个脚本中执行外部命令并捕获输出并解析它。捕获和分析的Python里面

下面的代码我写了执行dmidecode |

#!/usr/bin/python 
import os 
f = os.popen("dmidecode | less") 
package = f.read() 
print 'Bios Information is:',package 

执行上面的代码之后:使用os.popen()和其输出到可变称为包存储较少命令须藤蟒sample.py =>输出是具有如下:

BIOS Information 
    Vendor: ***** 
    Version: 1.40 
    Release Date: 09/07/2009 
    ROM Size: 1024 kB 
    Characteristics: 
      PCI is supported 
      BIOS is upgradeable 
      BIOS shadowing is allowed 
      Boot from CD is supported 
      Selectable boot is supported 
      BIOS ROM is socketed 
      EDD is supported 
      Japanese floppy for NEC 9800 1.2 MB is supported (int 13h) 
      Japanese floppy for Toshiba 1.2 MB is supported (int 13h) 
      5.25"/360 kB floppy services are supported (int 13h) 
      5.25"/1.2 MB floppy services are supported (int 13h) 
      3.5"/720 kB floppy services are supported (int 13h) 
      3.5"/2.88 MB floppy services are supported (int 13h) 
      8042 keyboard services are supported (int 9h) 
      CGA/mono video services are supported (int 10h) 
      ACPI is supported 
      USB legacy is supported 
      Targeted content distribution is supported 

所以,现在我想分析一个价值:供应商,发布日期&版本,并应提供相关的值。

问题是我必须在上面的脚本中执行外部命令,捕获输出并解析它?
那么有人可以帮助我找出这个问题?

帮我看看,但没有可用的文件...

+0

更好地给予更多的解释。告诉他们原来的阵列格式,您的命令(AT-至少样品) – dhana

+0

你可以参考以下链接计算器http://stackoverflow.com/questions/13814428/python-linux-dmidecode-how-to-obtain-hw-info-通过解析 –

+0

我不知道第一个程序与第二个程序有什么关系。 –

回答

0

您有两个问题。每个StackOverflow问题只有一个问题。这只解决了第一个问题。

为了抓住一个程序,你可以使用subprocess.check_output() stdout或stderr输出。 “

”用参数运行命令并返回其输出。“

例子:

import subprocess 

    output = subprocess.check_output("dmidecode") 
    print(output.decode("utf-8")) # Convert from bytes to string 

当你有可用的输出,你可以问这样的问题如何分析它,并且要与所分析的数据做什么。

+0

我得到的输出,但我想解析第3个值的值并显示输出一个接一个@米克Ohtamaa –

+0

@ rohit_777:为了解析这些输出打开一个新的StackOverflow问题与样本输出,你想什么用数据做 –