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