Как вывести все процессы одним сообщением?

Имеется следующий код, как вывести в нем все процессы одним сообщением и убрать из каждого .exe?

import psutil
for proc in psutil.process_iter():
    name = proc.name()
    print(name)
    if name == "program.exe":
        pass

Чтобы получилось:

chrome
opera
browser
svhost
....

Ответы (2 шт):

Автор решения: eri

Способов можно придумать море

Вот этот почти правильный (почти потому что на некоторых системах приложения без расширений и может быть точка в имени)

name = proc.name().rsplit('.',maxsplit=1)[0]

Вот этот не очень, но

name = proc.name().rstrip('ex').strip('.')

Одним сообщением это как? предположу что

proclist = list(map( lambda proc:  proc.name().rsplit('.',maxsplit=1)[0]
, psutil.process_iter()))
→ Ссылка
Автор решения: Alioshca Z

Через subprocess можно:

from subprocess import Popen, PIPE

prs = Popen('tasklist', stdout=PIPE).stdout.readlines()
pr_list = [prs[i].decode('cp866', 'ignore').split()[0] for i in range(3,len(prs))]

for p in pr_list:
    print(p.split('.exe')[0])

Для получения одной строки из списка:

from subprocess import Popen, PIPE

prs = Popen('tasklist', stdout=PIPE).stdout.readlines()
pr_list = [prs[i].decode('cp866', 'ignore').split()[0].split('.exe')[0] for i in range(3,len(prs))]
pr_string = ', '.join(pr_list)

print(pr_string)
→ Ссылка