Вывести все запущенные процессы Windows

Я хочу с помощью python вывести все запущенные процессы что-бы в них присутствовали PID,Название и Уровень доступа. Нашел такое решение

for proc in psutil.process_iter(['pid', 'name', 'username']):
      print(proc.info)
      file = open('file.txt', 'w+')
      file.write(proc.info)

Но не могу записать в файл ошибка

TypeError: write() argument must be str, not dict

при попытке

file.write(str(proc.info))

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


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

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

попробуйте так:

with open('c:/temp/file.txt', 'w+') as f:
    for proc in psutil.process_iter(['pid', 'name', 'username']):
        print('{name}\t{pid}\t{username}'.format(proc.info), file=f)
→ Ссылка
Автор решения: MaxU

Решение в стиле Pandas:

import pandas as pd

df = pd.DataFrame([proc.info  for proc in psutil.process_iter(['pid', 'name', 'username'])])
df.to_csv("c:/temp/processes.csv", sep=";", index=False)
→ Ссылка
Автор решения: Danowski100

Просто нужно открывать файл не в "режиме записи"

file = open('file.txt', 'w')

Потому что в этом режиме файл полностью перезаписывается.

А нужно открывать файл в "режиме добавления"

file = open('file.txt', 'a')

Второй аргумент должен быть 'a'. Тогда файл будет ДОПОЛНЯТЬСЯ, а не перезаписываться. И будут сохраняться все процессы.

→ Ссылка