Если вы разбор много файлов, вы должны рассмотреть версию на основе оболочки сценария этого кода. Я очень люблю python, но знание вашего пути вокруг инструментов UNIX иногда намного проще. Используйте правильный инструмент для правильной работы.
Если у вас есть доступ к машине Linux, или командной строки эмулятор как cmder вы можете сделать следующее:
find . -name "*.java" -exec grep -n -E "LOGGER.\w+\(" {} \;
Параметр -n получает вас номер строки, а -E указывает, что Grep должен выглядеть для шаблона, а не буквальное совпадение. В этом примере отображаются все * .java-файлы в текущей структуре каталогов (текущая папка и все вложенные папки) и выполняется поиск каждого найденного для строк типа LOGGER.info ("," LOGGER.debug ("," LOGGER.error (», который показывает мне все мои инструкции регистрации в моем java-коде, но не инструкции, в которых инициализируется LOGGER.
Как правило, вы обнаружите, что это также намного быстрее, чем использование одного скрипта python снова и снова, или даже цикл через файлы с питона скриптом
Edit:. Один примечания стороны - если вы используете окно консоль эмулятор, окончательный "\;"
изменяется на простой ";"
Я думаю, что будет. потребляют больше памяти и значительно замедляют процесс. – zadrozny
Насколько велика ваш файл? Если вы откроете файл за раз, это не будет проблемой. Кроме того, он будет требовать итерации через файл так или иначе. Этого нельзя избежать. – McGlothlin
Возможно, стоит упомянуть, что 're' не может отслеживать номера строк сам по себе, поэтому он потребует какой-то линейной итерации. – McGlothlin