Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/42: Рейтинг темы: голосов - 42, средняя оценка - 4.62
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755

Как обойти файлы и папки в директории и найти все что нужно?

13.09.2020, 21:17. Показов 9275. Ответов 57
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Надо показать текстовые файлы (могут быть как с расширением txt, так и без никакого), в которых одновременно присутствуют все слова или синонимы, заданные для поиска.

Окончания обрезаю, чтобы не надо было думать, как это автоматизировать (чтобы не надо было искать слова в разных словоформах).
Примеры запросов (в разных строках разные примеры запросов):
живот=абдомен температур=лихорадк=гипетерм сыпь горл

(1 красн=кровоизл глаз) (3 бол горл=глотк) Здесь 1 означает, что может быть одно промежуточное слово, а может и не быть: красные глаза, краснота в глазах, а 2 - до 2 промежуточных слов: болезненное, воспалённое, покрасневшее, раздраженное горло. Можно и без этого функционала, если это сложно.

(жидк стул)=понос рвот

(высок=повышен температур вечер) (бол груд)

Если какой-то функционал из этих расширенных вариантов тяжело запрограммировать, то ограничиться простым вариантом. Например:
сып температур горл
Буду искать несколько раз, подставляя синонимы тогда в запрос.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.09.2020, 21:17
Ответы с готовыми решениями:

Как удалить все файлы, пустые и непустые папки из текущей директории?
Подскажите, как удалить все файлы, пустые и непустые папки из текущей директории.

Вывести все файлы и папки директории, желательно в массив
Здравствуйте, форумчане! Возник вопрос, как вывести все файлы и папки, желательно в массив, которые находятся в какой-нибудь директории ?

Как в коде указать все папки, из которых нужно удалить все файлы старше 31-го дня?
Привет всем, кто не обошёл вниманием данный пост!:friends: Есть ТЗ: удалять файлы старше 31 дня из заданных папок. Пример -...

57
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
14.09.2020, 11:49
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Alli_Lupin Посмотреть сообщение
grep - лучший поисковик.
Категоричность — восьмой смертный грех.

Зависит от задачи.

grep — полнотекстовый поиск регулярками без построения индекса. Удобен для своего класса задач.

Но уже сейчас автор пытается натянуть сову на глобус, планируя реализовать морфологию и поиск синонимов на регулярках в рамках одного запроса. Со временем могут появиться требования, которые не реализуются грепом. Самое банальное — ранжирование по релевантности. И снова уже сейчас автор пытается запихнуть часть модели релевантности в синтаксис запроса, это выражается в количестве допустимых слов между токенами запроса.

В итоге все равно придется смотреть на движки полнотекстового поиска (Sphinx, Lucene).

Может быть, нужна предобработка данных для извлечения фактов/симптомов, и затем поиск по ним.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
14.09.2020, 12:05  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Может быть, нужна предобработка данных для извлечения фактов/симптомов, и затем поиск по ним
Около 50 болезней только инфекционных на примете, не учитывая паразитарных. А хочется ещё диагностировать эндокринологию, сердечно-сосудистую, болезни живота и ещё кое-что. Слишком сложно получается. А при привлечении других людей (экспертов) стоимость разработки для личного использования многократно возрастает и выходит из-под контроля, так как не понятно, что скрывается на самом деле за корочками и стажем титулованного специалиста.

Добавлено через 6 минут
Интересная поисковая часть запроса:
насморк ИЛИ ринит ИЛИ синусит ИЛИ сопли ИЛИ выделения из носа ИЛИ носовые выделения ИЛИ гайморит
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
14.09.2020, 12:24
Цитата Сообщение от supmener Посмотреть сообщение
Интересная поисковая часть запроса:
насморк ИЛИ ринит ИЛИ синусит ИЛИ сопли ИЛИ выделения из носа ИЛИ носовые выделения ИЛИ гайморит
Ничего интересного. Парсим запрос
Python
1
2
3
4
>>> query = 'насморк ИЛИ ринит ИЛИ синусит ИЛИ сопли ИЛИ выделения из носа ИЛИ носовые выделения ИЛИ гайморит '
>>> result = [i.strip() for i in query.split('ИЛИ')]
>>> result
['насморк', 'ринит', 'синусит', 'сопли', 'выделения из носа', 'носовые выделения', 'гайморит']
Открываем файл и ищем вхождения каждой подстроки
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
14.09.2020, 12:32  [ТС]
'выделения из носа' могут быть также 'выделениями из носа' и 'выделениям из носа' и 'выделениями из носовых пазух'
А как делать поиск в найденном или вместо этого добавить в этот поисковый запрос температура и кашель?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
14.09.2020, 12:45
это уже морфологию языка надо использовать и приводить слова к нормальной форме. И выкидывать лишние предлоги.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pymorphy2
 
morph = pymorphy2.MorphAnalyzer()
 
words = [
   'выделения',
   'из',
   'носа',
   'выделениями',
   'выделениям',
   'выделениями',
   'из',
   'носовых',
   'пазух',
]
 
result = set()
for i in words:
    p = morph.parse(i)[0]
    print(p)
    if 'PREP' in p.tag:
        continue
    result.add(p.normal_form)
    
print(result)  #{'носов', 'выделение', 'пазуха', 'нос'}
1
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
14.09.2020, 13:11
Цитата Сообщение от supmener Посмотреть сообщение
'выделения из носа' могут быть также 'выделениями из носа' и 'выделениям из носа' и 'выделениями из носовых пазух'
У задачи нечеткого поиска нет точного решения. Есть конфликт между точностью и полнотой результатов. Возможны различные ситуации:
- Все результаты в выдаче релевантны запросу.
- Помимо релевантных результатов есть нерелевантные (страдает точность в пользу полноны).
- Результаты релевантны, но найдены не все (страдает полнота в пользу точности).
- Все результаты в выдаче нерелевантны (поиск чего-то не понимает, попытка компенсировать полнотой).

Поиск других классов предлагается читателю в качестве упражнения.

Добиваться качества выдачи можно самыми разными способами: обработка и переписывание запроса, подбор параметров функций ранжирования, разметка корпуса данных и прочее seo. Ключевой момент: ты не сможешь на берегу определить, какой набор механизмов нужен тебе для решения задачи. Ты сейчас выдумываешь сценарии, не представляя, насколько они нужны и создают ли они проблему. Для оценки качества нужна метрика.

Например, по запросу «выделения из носа» вполне может быть найден документ с фразой «выделениями из носовых пазух». Первое слово найдено по морфологии, второе выкинули как незначимое, третье найдено по префиксу «нос» четвертое выкинули как значимое. Насколько хорошо сработает такая выдача и не будет ли ожидаемый документ слишком низко — можно сказать только на конкретном корпусе. Без корпуса можно подумать, что нужна модель, которая различает понятия «нос» и «носовые пазухи» по контексту, чтобы в выдаче не было соплей по запросу «перелом носа». На практике может оказаться, что другие механизмы (морфология, поиск по префиксу) способны компенсировать отсутствие такой модели.

Резюме. Для решения задачи нужны корпус запросов, документы, ассесмент и метрика качества. Наверняка тебе на старте этого не нужно. Скорее всего, достаточно будет поднять любой полнотекстовый поисковик, добавить в него русскую морфологию и пользоваться. По мере использования набирать корпус запросов и анализировать. какие еще нужны механизмы. Если сейчас у тебя нет даже набора документов, то нет и задачи как таковой.
1
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
14.09.2020, 14:29
Парни - 0x10, все правильно сказал: натягивать сову на глобус тяжело.
ТС нужно осознать, что для реальных задач юзать придется тяжелую артиллерию.
Либо готовые поисковые движки, либо PostgreSQL: https://postgrespro.ru/docs/po... textsearch
Для небольшого числа документов можно лишь поиграться с какими-то примитивами на основе морфоанализаторов и регулярок.
Да и понимание text процессинга у ТС пока полностью отсутствует.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
14.09.2020, 15:46  [ТС]
Подвопрос в отдельной теме
Ищу текстовой редактор для поиска с регулярными выражениями, чтобы найденные слова сразу, одновременно подсвечивались
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
15.09.2020, 12:21  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
зачем в линукс тащить всякий виндовый хлам? Там и так все есть. И даже больше
В теме по ссылке в предыдущем посте не удалось найти подходящий текстовой редактор с регулярными выражениями. Рыжий лис сначала думал, что можно составить регулярку, только у меня не получилось. А он сам, как думаю, ошибся.
0
5184 / 1074 / 150
Регистрация: 29.01.2013
Сообщений: 6,258
15.09.2020, 12:26
supmener, может быть вам подойдёт vim? Он умеет много, включая регулярки и отдельно ставить не надо...
0
15.09.2020, 12:31

Не по теме:

Цитата Сообщение от Alli_Lupin Посмотреть сообщение
может быть вам подойдёт vim?
Ха-ха-ха, насмешили

0
15.09.2020, 12:33

Не по теме:

Рыжий Лис, да чего: войдёт в вим, выйти не сможет. лепота...

0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
15.09.2020, 12:33
Цитата Сообщение от supmener Посмотреть сообщение
Рыжий лис сначала думал, что можно составить регулярку,
Я никогда не предлагал искать регулярками. Для русского текста - это глупо, лишком много морфологии. Если бы для английского - ещё можно было бы попробовать.

Это у вас не получилось создать регулярку
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
15.09.2020, 12:37  [ТС]
Так если её нельзя создать, поэтому и не получилось значит.
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
15.09.2020, 21:55  [ТС]
Изобретенная сегодня регулярка в теме про текстовой редактор на самом деле не работает.
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
16.09.2020, 02:06
Цитата Сообщение от supmener Посмотреть сообщение
Так если её нельзя создать
Создать-то, наверняка, можно, только она будет очень сложной, практически человеконечитаемой.
Поэтому люди используют парсеры на правилах, которые генерируют регулярки под капотом.
Правила легче понимать, структурировать и масштабировать (до известных пределов).
Пример такого парсера я уже как-то приводил.
Приведу еще раз: https://nbviewer.jupyter.org/g... book.ipynb
https://github.com/natasha/yargy
https://www.youtube.com/watch?v=NQxzx0qYgK8
1
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
16.09.2020, 05:30
Серьёзно, давно бы сел и написал код, который будет работать, как ты хочешь.

Цитата Сообщение от supmener Посмотреть сообщение
должны отобраться только файлы в которых оба совпадения есть, относящиеся и к кашлю, и к насморку.
Python
1
2
3
4
5
6
import os
 
lst = ['кашель', 'насморк']
 
for root, dirs, files in os.walk('path/to/txt'):
    print(root, dirs, files)
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
16.09.2020, 08:23  [ТС]
А как подставить сюда регулярное выражение?
Code
1
кашел|кашл|насморк|ринит|синусит|сопли|выделен.+нос|нос.*выделен|гайморит
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
16.09.2020, 08:55
Так это же опять будет одно "слово".

Начни писать итерационно. Первая итерация - обход папки, фильтрация только текстовых файлов. Вторая итерация - открытие файла, поиск одного слова (или даже регуляркой).

Итерация - здесь имеет смысл постепенное написание программы.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
16.09.2020, 11:14  [ТС]
Garry Galler, Благодарю. Поставил на закачку видео. Надо будет ознакомиться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2020, 11:14

Как извлечь все папки и файлы zip архива,не считая корневой директории архива и какая кодировка у архиватора winzip?
Всех приветствую. Имеется zip архив. Нужно извлечь все файлы в определённую папку на sd карте,не считая корневой директории архива,если она...

Как сохранить все wma файлы из папки в один, что бы потом сразу все подгружать?
как сохранить все wma файлы из папки в один, что бы потом сразу все подгружать в файл?

Отобразите содержимое (все файлы и директории) папки «Program Files» корневого каталога C:\\
Отобразите содержимое (все файлы и директории) папки «Program Files» корневого каталога C:\\

Как найти все папки и файлы в ней
как сделать чтобы найти все папки и файлы и вывести на экран Memo1->Lines->Add(***) ; c:\new показать все что есть в этой папки пример ...

Нужно написать прогу которая показывает все файлы в директории
Ребят ПОМОГИТЕ !!!! Я уже никак !!! Нужно написать прогу которая показывает все файлы в директории (Диск C:\) Нужно использовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru