在带有 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/