Часть моего кода связана с завершением процесса пользовательским вводом с помощью командной строки Windows. Вот фрагмент моего проекта.
import subprocess
def kill_process():
# Displays running processes similar to linux 'top' command.
subprocess.call(['tasklist'])
cmd = input('\nEnter process name or process ID to kill process: ')
try:
# Kills process via user input.
subprocess.call(['taskkill', '/pid', cmd])
except:
print('Invalid process name or ID.\n')
kill_process()
Если пользователь вводит неверное имя процесса или идентификатор, я получаю эту ошибку:
ОШИБКА: процесс "user_input" не найден.
Я полагаю, что эта ошибка не обрабатывается Python, а скорее Windows. Поэтому я не могу поймать исключение и обработать его соответственно. Когда возникает эта ошибка, она вынуждает мой код завершиться, что является проблемой, потому что мне нужен код для продолжения, даже если возникла ошибка пользователя.
Я могу анализировать данные броска и получать имена / идентификаторы процессов, используя subprocess.check_output () с чем-то вроде этого;
cmd = input('\nEnter process name or process ID to kill process: ')
if cmd in subprocess.check_output(['tasklist'], encoding='UTF-8'):
subprocess.call(['taskkill', '/pid', cmd])
но, если возможно, я скорее избегу этого метода. Я мог бы столкнуться с подобными ошибками, когда имел дело с CMD позже, и анализ данных этого типа может стать утомительным.