使用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)。感谢
答案 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。它们具有您目前看来需要的所有功能。我目前没有时间提供样品 - 如果有必要,我稍后会这样做。