Найти - Пользователи
Полная версия: Подскажите со скриптом!
Начало » Центр помощи » Подскажите со скриптом!
1
iNdexoiD
Есть скрипт,хотелось чтоб вместо одного 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()
py.user.next
Нельзя весь код писать в одной функции. Нарушается читаемость, потому что нужно много запоминать.
iNdexoiD
py.user.next
Нельзя весь код писать в одной функции. Нарушается читаемость, потому что нужно много запоминать.
Вы сейчас это о чём? Скрипт у меня рабочий,нельзя разве добавить такую функцию?
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
должны быть в разных функциях.

Функции должны быть мелкими, помещающимися на одном экране (25 строк).
Когда у тебя код разделён на функции, то можно работать только с нужной функцией. Это не только упрощает понимание кода, но и не даёт поломать всю программу в результате изменений.

iNdexoiD
хотелось чтоб вместо одного email можно было добавлять ещё несколько
Вот у тебя там несколько мест, где есть работа с email. Возникает двусмысленность.
iNdexoiD
и вконце строк удалялись пустые пробелы
Вот у тебя там несколько мест, где есть работа со строками. Возникает двусмысленность.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB