Форум сайта python.su
0
Подскажите пожалуйста как удалить самый тяжелый блокнот который запущен на вашем компьютере под Windows?
С получением всего списка проблем нет, а вот со считыванием и манипулированием его не могу разобраться, помогите пожалуйста.
import subprocess
proc1 = subprocess.call("tasklist", shell = True)
Офлайн
7
Про “…самый тяжелый блокнот…” не понятно, вот скрипт который убивает процесс, который ест больше всего памяти (кроме системных процессов). Без использования PID .
import subprocess import os out = subprocess.Popen('wmic /node:localhost process list brief', shell=True, stdout=subprocess.PIPE) z = [] for line in out.stdout.readlines(): try: z.append((int(str(line.split()[-1])[2:-1]), str(line.split()[1])[2:-1])) except (IndexError, ValueError): continue # в первой строке нет цифр, а последняя пустой список z = dict(z) zmax = max(z.keys()) text = "Процесс %s занимает %f Мб памяти" print(text % (z[zmax], zmax/1048576.0)) print("Убить процесс? Y или Enter: ", end = ' ') y = input() try: if y in ("Yy"): os.system("TASKKILL /F /IM " + z[zmax]) except Exception as err: print(err)
Отредактировано elisk (Фев. 27, 2016 15:47:39)
Офлайн
0
elisk
Про “…самый тяжелый блокнот…” не понятно, вот скрипт который убивает процесс, который ест больше всего памяти (кроме системных процессов). Без использования PID .
Отредактировано rudichekkk (Фев. 27, 2016 17:16:00)
Офлайн
7
строка 3: запускаем wmic для получения списка процессов (WMIC представляет собой командную строку и интерфейс написания сценариев: WMIC)
строка 4: создаем пустой список куда будем кидать пары кортежей из процесса и объема занимаемой памяти, чтобы потом получить словарь.
строка 5: в цикле for получаем эти пары кортежей и добавляем их в словарь
строка 9: except (IndexError, ValueError) - так как первая строка в списке названия столбцов то получаем исключение IndexError, а последняя - пустой список что дает нам ValueError. Их мы и пропускаем.
строка 12: создаем словарь из кортежей. Первым значением - объем памяти, вторым - имя процеса.
строка 13: получаем максимальное значение по объему.
Предпоследняя строка except Exception as err: нужна если процесс системный.
Отредактировано elisk (Фев. 27, 2016 20:20:41)
Офлайн
0
elisk
строка 3: запускаем wmic для получения списка процессов (WMIC представляет собой командную строку и интерфейс написания сценариев: WMIC)строка 4: создаем пустой список куда будем кидать пары кортежей из процесса и объема занимаемой памяти, чтобы потом получить словарь.строка 5: в цикле for получаем эти пары кортежей и добавляем их в словарьстрока 9: except (IndexError, ValueError) - так как первая строка в списке названия столбцов то получаем исключение IndexError, а последняя - пустой список что дает нам ValueError. Их мы и пропускаем.строка 12: создаем словарь из кортежей. Первым значением - объем памяти, вторым - имя процеса.строка 13: получаем максимальное значение по объему.Предпоследняя строка except Exception as err: нужна если процесс системный.
Офлайн