folder_open

code Python verified Бесплатная загрузка devices Кроссплатформенный

code Предпросмотр кода

Python
#!/usr/bin/env python3
"""
Email Extractor for Local Folders
Recursively scans directories and extracts emails
"""
import os
import re
from pathlib import Path

def scan_folder_recursive(root_path, file_types=None):
    """Recursively scan folder for emails"""
    emails = set()
    pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'

    if file_types is None:
        file_types = {'.txt', '.html', '.csv', '.log', '.xml'}

    for root, dirs, files in os.walk(root_path):
        dirs[:] = [d for d in dirs if not d.startswith('.')]

        for filename in files:
            if Path(filename).suffix.lower() not in file_types:
                continue

            file_path = os.path.join(root, filename)
            try:
                with open(file_path, 'r', encoding='utf-8') as f:
                    content = f.read()
                found = re.findall(pattern, content)
                emails.update(e.lower() for e in found)
            except (UnicodeDecodeError, PermissionError):
                continue

    return sorted(emails)

if __name__ == '__main__':
    import sys
    emails = scan_folder_recursive(sys.argv[1])
    print(f"Found {len(emails)} unique emails")

info Об инструменте

Экстрактор email из папок рекурсивно сканирует структуру каталогов для поиска и извлечения email-адресов из любых поддерживаемых типов файлов. Идеально для миграций legacy-систем, аудитов соответствия и проектов восстановления данных.

Ключевые особенности

  • Рекурсивное сканирование - Неограниченная глубина обхода папок
  • Многоформатная поддержка - Файлы TXT, HTML, CSV, LOG, PDF, XML
  • Паттерны включения/исключения - Glob-паттерны для фильтрации
  • Прогресс в реальном времени - Прогресс-бар с расчётом времени
  • Удаление дубликатов - Автоматическая дедупликация
  • Поддержка возобновления - Контрольные точки для прерванных сканирований

Поддерживаемые типы файлов

  • Текстовые файлы - .txt, .log, .md, .readme
  • Разметка - .html, .htm, .xml
  • Данные - .csv, .tsv, .json
  • Документы - .pdf (требуется pdfplumber)

Производительность

  • Скорость - 100-500 файлов в минуту
  • Память - ~50МБ постоянного использования
  • Глубина - Неограниченное количество уровней папок

Требования

  • Python 3.6+
  • Без внешних зависимостей для базового использования
  • pdfplumber для поддержки PDF (опционально)

Совет: Для очень больших папок (100К+ файлов) используйте --checkpoint 5000 для сохранения прогресса каждые 5000 файлов.

download Скачать скрипт

Нужна полная автоматизация?

Попробуйте Postigo для автоматизированных email-кампаний с AI-персонализацией

rocket_launch Start Free Trial