if any(item in q for item in d) :
делает не то, что вы думаете.
Проблема с вашей командой if
заключается в том, что у вас сначала цикл for
.q
- это отдельные строки, которые вы хотите проверить, поэтому item in q
фактически проверяет, что строка (как строка объекта) находится внутри одного из элементов q
строки (поэтому проверяется один элемент последругой), который не может работать.Я бы предложил разделить каждую тестируемую строку, чтобы сохранить имя файла.
Тогда for item in d
тоже не делает то, что вы думаете.Он зацикливает один символ за другим в строке.Вы можете сначала разбить строку, чтобы конечный результат мог выглядеть примерно так:
d = os.popen("""wmic process get name | findstr /v "Name 'System Idle Process' System""").read().lower().split()
lists = ["opera.exe" , "chrome.exe" , "iexplore.exe" , "firefox.exe" , "microsoftedgecp.exe"]
if any(item.split(os.sep)[-1] in lists for item in d) :
Может быть не идеальным, но это начало.