Определение запуска программ в Python

Как я могу использовать Python для определения того, какие программы в настоящее время работают. Я нахожусь в Windows.

Благодаря @ hb2pencil для команды WMIC! Вот как можно вывести вывод без файла:

import subprocess cmd = 'WMIC PROCESS get Caption,Commandline,Processid' proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) for line in proc.stdout: print line 
 import os os.system('WMIC /OUTPUT:C:\ProcessList.txt PROCESS get Caption,Commandline,Processid') f = open("C:\ProcessList.txt") plist = f.readlines() f.close() 

Теперь plist содержит форматированный список процессов, разделенных пробелами:

  • Первый столбец – это имя исполняемого исполняемого файла
  • Второй столбец – это команда, которая представляет запущенный процесс
  • Третий столбец – это идентификатор процесса

Это должно быть просто проанализировать с помощью python. Обратите внимание, что первая строка данных – это метки для столбцов, а не фактические процессы.

Обратите внимание, что этот метод работает только на окнах!

Информация о трубопроводах из подпроцессорных команд не идеальна по сравнению с реальным инструментом python, предназначенным для получения процессов. Попробуйте модуль psutil. Чтобы получить список номеров процессов, выполните следующие действия:

 psutil.get_pid_list() 

Боюсь, что вам нужно загрузить этот модуль онлайн, он не включен в дистрибутивы python, но это лучший способ решить вашу проблему. Чтобы получить доступ к названию процесса, для которого у вас есть номер, выполните следующие действия:

 psutil.Process(<number>).name 

Это должно быть то, что вы ищете. Кроме того, здесь можно найти, работает ли конкретный процесс:

 def process_exists(name): i = psutil.get_pid_list() for a in i: try: if str(psutil.Process(a).name) == name: return True except: pass return False 

Это использует имя исполняемого файла, поэтому, например, чтобы найти окно powershell, вы должны сделать следующее:

 process_exists("powershell.exe") 

Я получил доступ с помощью get_pid_list (). Более новый метод работал для меня в окнах и OSX:

 import psutil for proc in psutil.process_iter(): try: if proc.name() == u"chrome.exe": print(proc) print proc.cmdline() except psutil.AccessDenied: print "Permission error or access denied on process"