Использование Python для поиска определенных имен файлов в (под) папках - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь сделать поиск файлов, программу на Python, с графическим интерфейсом. Он будет использоваться для поиска в указанных каталогах и подкаталогах. Для файлов, имена файлов которых должны быть вставлены в поле ввода. Хотя я довольно новичок в программировании на Python, я искал в Интернете и получил некоторую информацию о модуле os.

Затем я перешел и попытался написать простой код с os.walk и без программы с графическим интерфейсом:

import os
for root, dirs, files in os.walk( 'Path\to\files'):
    for file in files:
       if file.endswith('.doc'):
        print(os.path.join(root, file))

Что работало нормально, однако ... file.endswith() Только смотрит напоследняя часть имени файла. Проблема в том, что в пути к файлу более 1000 файлов с .doc. И я хочу, чтобы этот код мог выполнять поиск частей имени файла , например " Caliper " в имени файла " Hilka_Vernier_Caliper.doc ».

Так что я пошел и искал другие методы, кроме file.endswith(), и нашел кое-что о file.index(). Поэтому я изменил код на:

import os
    for root, dirs, files in os.walk( 'Path\to\files'):
        for file in files:
           if file.index('Caliper'):
            print(os.path.join(root, file))

Но это не сработало, как планировалось ... У кого-то здесь есть идея, как я мог бы сделать эту работу?

1 Ответ

2 голосов
/ 11 октября 2019

Вы можете использовать pathlib вместо старого os: https://docs.python.org/3/library/pathlib.html#pathlib.Path.rglob

КСТАТИ, file.index вызывает исключение, если имя не найдено, поэтому вам нужно использовать предложение try / исключением.

Другой способ - использовать if "Caliper" in str(file):

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...