2012-12-13 63 views
1

我目前使用dmidecode的一切,但我還沒有找到檢索規範在Linux(主要的Fedora,Ubuntu的,Debian的,CentOS的,紅帽)Python,在Linux中通過lspci或HAL獲取VGA規格?

我在想什麼的顯卡好信息使用是:lspci -vHAL

什麼是解析lspci數據的最有效的方式,獲得剛VGA部分,將其輸出json

def get_graphic_card_properties(): 
     import dbus 
     bus = dbus.SystemBus() 
     hal_manager_object = bus.get_object('org.freedesktop.Hal', '/org/freedesktop/Hal/Manager') 
     hal_manager_interface = dbus.Interface(hal_manager_object, 'org.freedesktop.Hal.Manager') 
     method = hal_manager_object.get_dbus_method('GetAllDevices', 'org.freedesktop.Hal.Manager') 
     print "\n".join(list(iter(method()))) 

這是唯一的代碼,我能夠遇到爲例,不會出現在我的Fedora 17 64位工作,我想是因爲沒有/orc/freedesktop/Hal.Manager

對此的任何想法?

回答

2

這裏是lspci的命令示例here。所以基本上你會調用子進程從python訪問命令。

import subprocess 

def find_vga(): 
    vga = subprocess.Popen("lspci -v -s `lspci | awk '/VGA/{print $1}'`", shell=True) 
    return vga 

print(find_vga()) 

OR

def find_vga(): 
    vga = subprocess.check_output("lspci -v -s `lspci | awk '/VGA/{print $1}'`", shell=True, executable='/bin/bash') 
    return vga 

print(find_vga()) 
+0

我得到,其中在數據這就是上端子輸出?我在終端上測試了它,並找回了我需要的結果。 – Dayan

+0

你能再次檢查上面的代碼嗎? – nickanor

+0

您錯過了「vga.communicate()」,在您的主要聲明後添加「vga.communicate()」,它將返回我需要的數據:)謝謝。 – Dayan