检查是否安装了程序列表中的程序

时间:2016-10-30 12:05:12

标签: python bash python-2.7

使用Python 2.7.12在Ubuntu 16.04上运行。 如果机器上安装了程序列表,我想检查一下。 到目前为止,我还没有这段代码:

import subprocess

program = ['rsync', 'locate']
  for x in program:
   cmd = "dpkg-query -W " + x + " | grep -c " + x
   process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
   output, error = process.communicate()

如果我没有将程序用作字符串变量,我可以运行此命令:

exists = subprocess.call("dpkg-query -W rsync | grep -c 'rsync'", shell=True)

并返回0/1。如果安装了程序,你能帮我解决如何构建返回的循环吗?可能在5行左右,我需要的只是简单的True / False(0/1)。感谢

2 个答案:

答案 0 :(得分:3)

您可以使用命令-v

 import subprocess

 list_cmd = ['rsync', 'locate', 'celery']

 for cmd in list_cmd:
     exist = subprocess.call('command -v '+ cmd + '>> /dev/null', shell=True)
     if exist == 0:
         print "I've got " + cmd

您的cmds(在列表中)必须在shell中可执行才能使用此解决方案。

答案 1 :(得分:0)

我建议使用pythons apt library。它们具有您目前看来需要的所有功能。我目前没有时间提供样品 - 如果有必要,我稍后会这样做。