Привет всем! Совсем недавно я писал о некоторых идеях, относящихся к запросу: парсер почтовых адресов на Python. Что же — от слов к делу, подумал я, и доделал-таки код 🙂 Да, над конечным кодом, доступным по ссылке еще можно поработать и навести красоту, но — что получилось, то получилось.
А получилось у нас:
— перебор файлов в указанной папке
— сбор почтовых адресов из этих файлов
— удаление дубликатов из конечного списка
import os
import re
import glob
import time
from os import listdir
from os.path import isfile
from os.path import join as joinpath
#Запрашиваем адрес рабочей папки, вводим его в переменную path
path = str(input('Где находятся исходные файлы? : \n'))
#Обрабатываем введенную ссылку для получения стандартного стиля с двумя слешами
regxp = '[\w-]+[\w:]'
result = re.findall(regxp, path) #Разбиваем введенный адрес на составляющие без обратного слеша
path = '\\\\'.join(result) #Добавляем двойной слеш после каждой папки (под формат Python)
file_for = str(input('В какую папку будем сохранять полученные результаты? :\n'))
regxp = '[\w-]+[\w:]'
file_for_result = re.findall(regxp, path) # Разбиваем введенный адрес на составляющие без обратного слеша
file_for_result = '\\\\'.join(file_for_result) # Добавляем двойной слеш после каждой папки (под формат Python)
mail_list = str(input('Как назовем файл для результатов? :\n'))
directory_for_base = file_for_result + mail_list
print('Сохраняем все в файл: ', mail_list)
delete_files = int(input('Обработанные файлы удаляем? 1 - да, 2 - нет: \n'))
if delete_files == 1: #Ветка с удалением обработанных файлов
os.chdir(path) # Переходим по указанному адресу
print('Считаем количество файлов для обработки... \n')
all_files = len([name for name in os.listdir('.') if os.path.isfile(name)]) # Считаем количество файлов
print('Предстоит обработать файлов: ', all_files)
time.sleep(2)
for file in glob.glob('*.*'):
print(file)
print('Предстоит обработать файлов: ', all_files)
with open(file, 'r', encoding='utf8') as f:
pars = f.read()
reg = '[\w.-]+@[A-Za-z-]+\.[\w.]+'
result = re.findall(reg, pars)
print(result)
result = str(result)
result = result.split()
print('В итоге получили: ', result)
print(len(result))
print('А теперь попробуем очистить: \n')
finallist = []
for i in result:
mailadress = i.replace('[', '').replace(']', '').replace('"', '').replace(',', '').replace('\'', '')
with open(directory_for_base, 'a', encoding='utf8') as f:
f.write(mailadress + '\n')
all_files = all_files - 1
os.remove(file)
clearlist = []
with open(directory_for_base, 'r', encoding='utf8') as f:
for line in f:
mailadress = f.readline()
clearlist.append(mailadress)
print('Что получили из файла насыпью без чистки на дубли: ')
print(clearlist)
clearlist = list(set(clearlist))
print('Что получили после чистки на дубли: ')
print(clearlist)
for i in clearlist:
with open('ok_base.txt', 'a', encoding='utf8') as f:
f.write(i)
print('Все!')
elif delete_files == 2: #Ветка без удаления обработанных файлов
os.chdir(path) # Переходим по указанному адресу
print('Считаем количество файлов для обработки... \n')
all_files = len([name for name in os.listdir('.') if os.path.isfile(name)]) # Считаем количество файлов
print('Предстоит обработать файлов: ', all_files)
time.sleep(3)
for file in glob.glob('*.*'):
print(file)
print('Предстоит обработать файлов: ', all_files)
with open(file, 'r', encoding='utf8') as f:
pars = f.read()
reg = '[\w.-]+@[A-Za-z-]+\.[\w.]+'
result = re.findall(reg, pars)
print(result)
result = str(result)
result = result.split()
print('В итоге получили: ', result)
print(len(result))
print('А теперь попробуем очистить: \n')
finallist = []
for i in result:
mailadress = i.replace('[', '').replace(']', '').replace('"', '').replace(',', '').replace('\'', '')
with open(directory_for_base, 'a', encoding='utf8') as f:
f.write(mailadress + '\n')
all_files = all_files - 1
clearlist = []
with open(directory_for_base, 'r', encoding='utf8') as f:
for line in f:
mailadress = f.readline()
clearlist.append(mailadress)
print('Что получили из файла насыпью без чистки на дубли: ')
print(clearlist)
clearlist = list(set(clearlist))
print('Что получили после чистки на дубли: ')
print(clearlist)
for i in clearlist:
with open('ok_base.txt', 'a', encoding='utf8') as f:
f.write(i)
print('Все!')
Сам код выглядит следующим образом:
Спасибо за внимание!
Как всегда — комментарии, мысли, возражения — прошу на почту.
Support the Blog!
Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️