Поиск всех .exe файлов в системе
Стоит задача написать скрипт, который будет проходить по файловой системе и записывать в список название файла с расширением .exe.
import os
lst = []
items = os.walk(f"C:/")
for i in items:
for k in i:
if type(k) == str:
if k.split(".")[-1] == "EXE" or k.split(".")[-1] == "exe":
app_window.current_item_label.setText(f"Файл: {k}")
lst.append(k)
elif type(k) == list:
for j in k:
if j.split(".")[-1] == "EXE" or j.split(".")[-1] == "exe":
app_window.current_item_label.setText(f"Файл: {j}")
lst.append(j)
Для достижения желаемого была использована библиотека "os" и функция "walk". На выходе я получаю список с 6184 названиями файлов, но было замечено, что функция проходит не по всей файловой системе, первоначально она обнаруживает перечень папок, приведенный ниже.
('C:/', ['$Recycle.Bin', '$WinREAgent', 'Config.Msi', 'Documents and Settings', 'Drivers', 'MSOCache', 'PerfLogs', 'Program Files', 'Program Files (x86)', 'ProgramData', 'Recovery', 'System Volume Information', 'Users', 'WCH.CN', 'Windows'], ['DumpStack.log.tmp', 'hiberfil.sys', 'pagefile.sys', 'swapfile.sys'])
Проблема состоит в том, что я не могу вытащить названия файлов из папок Users, Program Files, Program Files (x86), до них функция попросту не доходит.
Ответы (1 шт):
Нужно рекурсивно проходить по всем внутренним каталогам и искать фалы таким образом:
import os
import glob
directory = "С:\\"
files = []
for root, dirs, file in os.walk(directory):
for f in glob.glob(os.path.join(root, "*.exe")):
files.append(f)
for file in files:
print(file)
Имейте в виду, что скрипт должен быть запущен от имени администратора, чтобы получить доступ ко всем каталогам и файлам