2015-01-08 3 views
0

Pythonic способ проверить список пакетов, установленных в Centos/Redhat?Pythonic способ проверить, установлен ли пакет или нет

В Баш скрипт, я бы:

rpm -qa | grep -w packagename 
+0

может сделать то же самое в питона используя системную команду. – Marcin

+0

Это тот же вопрос? http://stackoverflow.com/questions/739993/how-can-i-get-a-list-of-locally-installed-python-modules – zehnpaard

+0

У rpm, похоже, есть привязки python, предоставляемые через 'rpm-python': http: //docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch16s03s04.html (Вот что я нашел, не использовал его ..) – sebastian

ответ

0

вы можете использовать Subprocess:

import subprocess 
child = subprocess.Popen("rpm -qa | grep -w packagename", stdout=subprocess.PIPE, shell=True) 
output = child.communicate()[0] 
print output 

использованием os:

import os 
os.system("rpm -qa | grep -w packagename") 
+0

Запуск linux-команды внутри python займет больше времени. –

0
import os 

present=0 
notpresent=0 
f3=open('INSTALLED.log','w') 
f2=open('NOTINSTALLED.log','w') 

f1=open('installed_packagelist.log','w') 

var = os.popen("rpm -qa --queryformat '[%{NAME}\n]'").read() 
f1.write(var) 


lines = [line.rstrip('\n') for line in open('installed_packagelist.log')] 

for index in range(len(lines)): 
contents = lines[index] 
test_str = "rpm -V " + contents 
var = os.system(test_str) 
if (var == 0): 
    print contents + "file present" 
    present = present +1 
    f3.write(contents) 

else: 
    print contents + "file not present" 
    notpresent = notpresent + 1 
    f2.write(contents) 

print present 
print notpresent 

f2.close() 
f3.close() 

f3=open('INSTALLED.log','r') 
f2=open('NOTINSTALLED.log','r') 


data=f3.read() 
print data 

print  "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" 

data=f2.read() 
print data 
+0

Пожалуйста, прочитайте раздел [Как ответить] (http://stackoverflow.com/help/how-to-answer). Вы должны хотя бы дать некоторое описание, а не только часть кода. –

Смежные вопросы