Как найти расположение исполняемого файла в Python? - PullRequest
1 голос
/ 28 марта 2019

Каков наилучший способ идентификации исполняемого файла в Python?

Я обнаружил, что следующая функция найдет исполняемый файл блокнота

from shutil import which
which('notepad')
Out[32]: 'C:\\Windows\\system32\\notepad.EXE'

другим способом сделать это.

from distutils import spawn
spawn.find_executable('notepad')
Out[38]: 'C:\\Windows\\system32\\notepad.exe'

Хотя оба метода работают для блокнота, я не могу заставить их найти другие исполняемые файлы, такие как vlc.exe , gimp-2.10.exe или другие.Как лучше найти исполняемые файлы на компьютере?

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Ниже приведен фрагмент, который поможет вам получить необходимые сведения:

Инструментарий управления Windows (WMI) - это реализация Microsoft Web-Enterprise Enterprise Management (WBEM), отраслевой инициативы, направленной на обеспечение общегоИнформационная модель (CIM) для практически любой информации о компьютерной системе.

import wmi as win_manage

w_instance = win_manage.WMI()
for details in w_instance.Win32_Product():
  print('Name=%s,Publisher=%s,Version=%s,' % (details.Caption, details.Vendor, details.Version))
1 голос
/ 28 марта 2019

Вот эффективный способ сделать это независимо от платформы:

import subprocess
import os
import platform

def is_tool(name):
    try:
        devnull = open(os.devnull)
        subprocess.Popen([name], stdout=devnull, stderr=devnull).communicate()
    except OSError as e:
        if e.errno == os.errno.ENOENT:
            return False
    return True

def find_prog(prog):
    if is_tool(prog):
        cmd = "where" if platform.system() == "Windows" else "which"
        return subprocess.call([cmd, prog])
...