от
Вот мой код:
    for r, d, f in os.walk(path):
        for folder in d:
            folders.append(os.path.join(r, folder))

    for f in folders:
        with open('search.txt') as file:
            contents = file.read()
            if f in contents:
                print ('word found')
У меня есть сценарий поиска по заданному каталогу, и я сравниваю имена путей с текстовыми файлами, полными определений вирусов. Я пытаюсь заставить скрипт распознавать, содержится ли имя файла в указанном текстовом файле. Проблема, которую я обнаружил, как вы можете видеть из кода, будет работать только с полным совпадением, и, поскольку он принимает путь в виде строки (например, «C: /test/virus.bat»), он никогда не будет совпадать , Можно ли настроить этот код так, чтобы любая часть пути могла быть сопоставлена с текстовым файлом? Не уверен, если это имеет смысл, любые предложения приветствуются или, пожалуйста, скажите, если не ясно. РЕДАКТИРОВАТЬ: Чтобы быть более понятным, вот логическая версия того, что я пытаюсь достичь: Список всех файлов в каталоге Получить имя файла по пути («вирус» в «C: / test / virus») Проверьте, содержится ли имя файла в текстовом файле              

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

1 Ответ

0 голосов
от
Вы можете использовать следующее, чтобы получить все файлы по заданному пути:
files = []
for r, d, f in os.walk(path):
    for folder in d:
        if f:
            for file in f:
                files.append(os.path.join(r, folder, file).replace('\\', '/'))
затем немного измените ваш код для достижения результата. Вы хотите проверить, находится ли содержимое файла в указанном пути к файлу, а не наоборот ->
if content in f
:
for f in files:
    with open('search.txt', 'r') as file:
        content = file.read()
        if content in f:
            print('Found')
    
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...