Передача информации из команд подпроцесса не идеальна по сравнению с реальным инструментом 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")