Привет всем! Совсем недавно я писал о некоторых идеях, относящихся к запросу: парсер почтовых адресов на 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('Все!')
Сам код выглядит следующим образом:
Спасибо за внимание!
Как всегда — комментарии, мысли, возражения — прошу на почту.