Форум сайта python.su
Есть скрипт,хотелось чтоб вместо одного email можно было добавлять ещё несколько,и вконце строк удалялись пустые пробелы.Плиз…
# !/usr/bin/python # -*- coding: utf-8 -*- # sort -u file.txt > newfile.txt delete dublikate # cat * >> sborka.txt import os from re import search from random import shuffle def main(): #ʘʘʘ####################### Настройки ########################## ################################################################ DIR_N = 1000 # количество нарезанных файлов в папке SPLIT_N = 51 # количество строк в одном файле DIR_NAME = "list_" # имя дериктории (будет name1..nameN) MAIL_CHK = "multirbl@mail.ru" # контрольный e-mail ################################################################ mails = "eml.txt" # файл с мыльниками bads = "bads.txt" # файл с черным списком доменов ################################################################ with open(mails, "r") as f: mails = [x.strip() for x in f.readlines()] with open(bads, "r") as f: bads = [x.strip() for x in f.readlines()] # remove dublicates len_before = len(mails) print "[+] Step 1: removing dublicates..." mails = list(set(mails)) len_after = len(mails) print "...done! Removed %d dublicates!" % (len_before - len_after) # remove domains from BL len_before = len(mails) print "[+] Step 2: removing domains from blacklist..." mails = [line.strip() for line in mails if not search('|'.join(bads), line.partition('@')[2])] len_after = len(mails) print "...done! Removed %d bad domains!" % (len_before - len_after) # shuffle emails print "[+] Step 3: shuffling emails..." shuffle(mails) print "...done!" # spliting file for SPLIT_N lines with DIR_N files in each directory # add MAIL_CHK to each file print "[+] Step 4: splitting files for %d lines with %d files in each folder" % (SPLIT_N, DIR_N) dest = None count, file_n, dir_c = 0, 1, 1 dirname = os.path.normpath(DIR_NAME + str(dir_c)) + os.sep try: os.mkdir(dirname) except OSError: pass for mail in mails: if file_n == DIR_N: dir_c += 1 file_n = 1 dirname = os.path.normpath(DIR_NAME + str(dir_c)) + os.sep try: os.mkdir(dirname) except OSError: pass if count % (SPLIT_N - 1) == 0: if dest: dest.write(MAIL_CHK + "\n") dest.close() dest = open(dirname + str(file_n), 'w') file_n += 1 dest.write((mail + '\n')) count += 1 print "...done!" print "[+] E-mail %s added to all files!" % MAIL_CHK if __name__ == '__main__': main()
Отредактировано iNdexoiD (Фев. 3, 2015 10:15:29)
Прикреплённый файлы: comb.py (2,7 KБ)
Офлайн
Нельзя весь код писать в одной функции. Нарушается читаемость, потому что нужно много запоминать.
Офлайн
py.user.nextВы сейчас это о чём? Скрипт у меня рабочий,нельзя разве добавить такую функцию?
Нельзя весь код писать в одной функции. Нарушается читаемость, потому что нужно много запоминать.
Офлайн
iNdexoiD
Вы сейчас это о чём?
iNdexoiD
# загрузка адресов (я добавил)
iNdexoiD
# remove dublicates
iNdexoiD
# remove domains from BL
iNdexoiD
# shuffle emails
iNdexoiD
# spliting file for SPLIT_N lines with DIR_N files in each directory
iNdexoiDдолжны быть в разных функциях.
# add MAIL_CHK to each file
iNdexoiDВот у тебя там несколько мест, где есть работа с email. Возникает двусмысленность.
хотелось чтоб вместо одного email можно было добавлять ещё несколько
iNdexoiDВот у тебя там несколько мест, где есть работа со строками. Возникает двусмысленность.
и вконце строк удалялись пустые пробелы
Офлайн