簡體   English   中英

檢查是否安裝了程序列表中的程序

[英]check if program from list of programs is installed

使用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()

如果我不使用program作為字符串變量,我可以運行此命令:

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

您的cmds(在列表中)必須在shell中可執行才能使用此解決方案。

我建議使用pythons apt library 它們具有您目前看來需要的所有功能。 我目前沒有時間提供樣品 - 如果有必要,我會在以后再做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM