python - 检查程序列表中的程序是否已安装

标签 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)。谢谢

最佳答案

您可以使用命令-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

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

关于python - 检查程序列表中的程序是否已安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40328848/

相关文章:

python - 如何在 Python 3.3 中引发异常

Python NLTK - 从语料库生成 'Dictionary' 并保存数字标签

bash - 如何制作自定义 BASH 函数以自动完成 cd 到特定目录

bash 在循环时删除我的文件 "~$ ./program > file.dat"(gnuplot)

python 2.7 : difference between exit() and raise ValueError ("example")

python - 从python中的嵌套字典创建层次树

python - 从字典列表中提取字符串

string - 在常量字符串上应用 bash 字符串运算符

django - 模块未找到错误 : No module named 'textencoder' error when upgraded to python 3

python-2.7 - 向calmap图添加颜色条