Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 18, 2017 15:00:30

sosok43k
Зарегистрирован: 2017-01-29
Сообщения: 30
Репутация: +  1  -
Профиль   Адрес электронной почты  

Непоняточка.Помогите

 file = str(input("Введите путь: "))
base_file_hotmail = "mail.base.hotmail.txt"
base_file_mail = "mail.base.mail.txt"
base_file_gmail = "mail.base.gmail.txt"
hotmail = "@hotmail.com"
mail = "@mail.ru"
gmail = "gmail.com"
with open(file, mode="r", encoding="utf-8") as my_base:
    with open(base_file_hotmail, mode="w+", encoding="utf-8") as base_mail_hotmail:
        with open(base_file_mail, mode="w+", encoding="utf-8") as base_mail_mail:
            with open(base_file_gmail, mode="w+", encoding="utf-8") as base_mail_gmail:
                for num, line in enumerate(my_base, 1):
                    if hotmail in line:
                        if mail in line:
                            if gmail in line:
                                print("№"+str(num)+" "+line)
                                base_mail_hotmail.write("password:"+line)
                                base_mail_mail.write("password:" + line)
                                base_mail_gmail.write("password:" + line)
Знаю,что код можно сделать намного меньше, но помогите не сортируются другие почты, сортируется только почта hotmail

Отредактировано sosok43k (Фев. 18, 2017 15:02:17)

Офлайн

#2 Фев. 18, 2017 15:12:49

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Непоняточка.Помогите

sosok43k
но помогите не сортируются
А у вас и намека нет на сортировку. Нужна фильтрация?
Тогда пожалуйте сюда https://ru.wikipedia.org/wiki/Grep
А по поводу кода, я не знаю как вам ответить, править нет смысла. Начнем так, напишите в коде комментарии что вы имели ввиду, и зачем она написана напротив каждой строчки.



Офлайн

#3 Фев. 23, 2017 15:44:50

sosok43k
Зарегистрирован: 2017-01-29
Сообщения: 30
Репутация: +  1  -
Профиль   Адрес электронной почты  

Непоняточка.Помогите

 file = str(input("Введите путь: "))  # запрашивает путь базы
base_file_hotmail = "hotmail.base.txt"  # папка с названием
base_file_mail = "mail.base.txt"  # папка с названием
base_file_gmail = "gmail.base.txt"  # папка с названием
hotmail = "@hotmail.com"  # переменная отвечающая за поиск почты hotmail
mail = "@mail.ru"  # переменная отвечающая за поиск почты mail
gmail = "@gmail.com"  # переменная отвечающая за поиск почты gmail
with open(file, mode="r", encoding="utf-8") as my_base:  # открытие файла с базой
    with open(base_file_hotmail, mode="w", encoding="utf-8") as hotmail_base:  # создание файла с почтой hotmail
        with open(base_file_mail, mode="w", encoding="utf-8") as mail_base:  # создание файла с почтой mail
            with open(base_file_gmail, mode="w", encoding="utf-8") as gmail_base:  # создание файла с почтой gmail
                vopros = str.lower((input("Что хотите(gmail,hotmail,mail):")))  # вопрос, какую почту искать
                if vopros == mail:  # искать почту mail
                    for line in my_base:  # создание списка в несколько рядом
                        if mail in line:  # ищет в базе переменную mail
                            mail_base.write(line)  # запись найденного в файл
                        elif vopros == hotmail:  # искать почту hotmail
                            for line_1 in my_base:  # создание списка в несколько рядом
                                if hotmail in line_1:  # ищет в базе переменную hotmail
                                    hotmail_base.write(line_1)  # запись найденного в файл
                        elif vopros == gmail:  # искать почту gmail
                            for line_1 in my_base:  # создание списка в несколько рядом
                                if gmail in line_1:  # ищет в базе переменную gmail
                                    gmail_base.write(line_1)  # запись найденного в файл
                        else:
                            print("Вы ввели неправильно")  # исключение
Я конечно понимаю, что я аутист, но я не понимаю, что здесь неправильно.

Отредактировано sosok43k (Фев. 23, 2017 16:09:44)

Офлайн

#4 Фев. 23, 2017 16:10:24

sosok43k
Зарегистрирован: 2017-01-29
Сообщения: 30
Репутация: +  1  -
Профиль   Адрес электронной почты  

Непоняточка.Помогите

 file = str(input("Введите путь: "))  # запрашивает путь базы
base_file_hotmail = "hotmail.base.txt"  # папка с названием
base_file_mail = "mail.base.txt"  # папка с названием
base_file_gmail = "gmail.base.txt"  # папка с названием
hotmail = "@hotmail.com"  # переменная отвечающая за поиск почты hotmail
mail = "@mail.ru"  # переменная отвечающая за поиск почты mail
gmail = "@gmail.com"  # переменная отвечающая за поиск почты gmail
with open(file, mode="r", encoding="utf-8") as my_base:  # открытие файла с базой
    vopros = str.lower((input("Что хотите(gmail,hotmail,mail):")))  # вопрос, какую почту искать
    if vopros == mail:  # искать почту mail
        with open(base_file_mail, mode="w", encoding="utf-8") as mail_base:  # создание файла с почтой mail
            for line in my_base:  # создание списка в несколько рядом
                if mail in line:  # ищет в базе переменную mail
                    mail_base.write(line)  # запись найденного в файл
                    if vopros == hotmail:  # искать почту hotmail
                        with open(base_file_hotmail, mode="w", encoding="utf-8") as hotmail_base:  # создание файла с почтой hotmail
                            for line_1 in my_base:  # создание списка в несколько рядом
                                if hotmail in line_1:  # ищет в базе переменную hotmail
                                    hotmail_base.write(line_1)  # запись найденного в файл
                                if vopros == gmail:  # искать почту gmail
                                    with open(base_file_gmail, mode="w", encoding="utf-8") as gmail_base:  # создание файла с почтой gmail
                                        for line_1 in my_base:  # создание списка в несколько рядом
                                            if gmail in line_1:  # ищет в базе переменную gmail
                                                gmail_base.write(line_1)  # запись найденного в файл
                                else:
                                    print("Вы ввели неправильно")  # исключение
или вот еще, я экспериментировал.

Офлайн

#5 Фев. 23, 2017 16:22:22

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Непоняточка.Помогите

 #!! str не нужен и так строка
file = str(input("Введите путь: "))  # запрашивает путь базы
#!! Поскольку переменная используется один раз то можно ее 
# захадкорить в команду open
base_file_hotmail = "hotmail.base.txt"  # папка с названием
base_file_mail = "mail.base.txt"  # папка с названием
base_file_gmail = "gmail.base.txt"  # папка с названием
#!! задание предопределенных email практически не имеет смысла
# вы все равно пользователя заставляете набирать все имя
# нет смысла ограничивать возможные шаблоны (это конечно от постановки задачи зависит)
hotmail = "@hotmail.com"  # переменная отвечающая за поиск почты hotmail
mail = "@mail.ru"  # переменная отвечающая за поиск почты mail
gmail = "@gmail.com"  # переменная отвечающая за поиск почты gmail
# !! вложенные with обычно заменяют на один
with open(file, mode="r", encoding="utf-8") as my_base:  # открытие файла с базой
    with open(base_file_hotmail, mode="w", encoding="utf-8") as hotmail_base:  # создание файла с почтой hotmail
# зачем создавать пустые файлы если вы их не будете потом заполнять?
        with open(base_file_mail, mode="w", encoding="utf-8") as mail_base:  # создание файла с почтой mail
            with open(base_file_gmail, mode="w", encoding="utf-8") as gmail_base:  # создание файла с почтой gmail
                vopros = str.lower((input("Что хотите(gmail,hotmail,mail):")))  # вопрос, какую почту искать
# обычно такую переменную называют pattern или template 
                if vopros == mail:  # искать почту mail
# Сюда оно пройдет только если vopros = "@mail.ru" выбор выше не имеет смысла можно убрать
# скорре всего в этом и ошибка
# for не создает списков. Это перебор строк
                    for line in my_base:  # создание списка в несколько рядом
                        if mail in line:  # ищет в базе переменную mail
                            mail_base.write(line)  # запись найденного в файл
                        elif vopros == hotmail:  # искать почту hotmail
# for не создает списков. Эта команда приведет к тому что внешним циклам нечего будет перебирать
                            for line_1 in my_base:  # создание списка в несколько рядом
                                if hotmail in line_1:  # ищет в базе переменную hotmail
                                    hotmail_base.write(line_1)  # запись найденного в файл
                        elif vopros == gmail:  # искать почту gmail
# for не создает списков. Эта команда приведет к тому что внешним циклам нечего будет перебирать
                            for line_1 in my_base:  # создание списка в несколько рядом
                                if gmail in line_1:  # ищет в базе переменную gmail
                                    gmail_base.write(line_1)  # запись найденного в файл
                        else:
                            print("Вы ввели неправильно")  # исключение



Офлайн

#6 Фев. 23, 2017 16:25:38

sosok43k
Зарегистрирован: 2017-01-29
Сообщения: 30
Репутация: +  1  -
Профиль   Адрес электронной почты  

Непоняточка.Помогите

doza_and
Вас понял, пойду исправлять,спасибо.

Офлайн

#7 Фев. 23, 2017 16:44:57

sosok43k
Зарегистрирован: 2017-01-29
Сообщения: 30
Репутация: +  1  -
Профиль   Адрес электронной почты  

Непоняточка.Помогите

doza_and
А что делать, если в 2 файла записывается только одна почта с паролем(hotmail,mail),а в (gmail), записывается все почты.

Офлайн

#8 Фев. 23, 2017 17:21:02

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Непоняточка.Помогите

sosok43k
Я конечно понимаю, что я аутист
Да вы не стесняйтесь, тут вроде все свои. Если я непонятно прокомментировал спрашивайте.
Я не думаю что у вас очень большая база адресов. Тогда можно упростить код и разбить его на логически независимые части
 import re
def write_filtered(data,file,pattern):
   with open(file,"w",encoding="utf-8") as f:
         for i in data:
             if pattern in i:
                f.write(i)
                 
with open("infile.txt", "r", encoding="utf-8") as my_base:
    data = my_base.readlines()
for i in ["@hotmail.com", "@mail.ru","@gmail.com"]:
    write_filtered(data,re.sub(r"[@\.]","_",i)+".txt",i)



Офлайн

#9 Фев. 23, 2017 17:22:28

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Непоняточка.Помогите

sosok43k
пойду исправлять,спасибо.
Да вы не спешите, продумайте план. лучше сейчас обсудить чем бегать туда сюда
Можете поставить ТИмвюер и кинуть в личку id, мне кажется проще вам устно объяснить чем переписываться

sosok43k
А что делать, если в 2 файла записывается только одна почта с паролем(hotmail,mail),а в (gmail), записывается все почты.
Онлайн

;) Хм. исправить наверное.




Отредактировано doza_and (Фев. 23, 2017 17:34:29)

Офлайн

#10 Фев. 23, 2017 17:29:56

sosok43k
Зарегистрирован: 2017-01-29
Сообщения: 30
Репутация: +  1  -
Профиль   Адрес электронной почты  

Непоняточка.Помогите

doza_and
Ну как сказать не большая, база в 22к почт.Я вроде пытаюсь, но чет не получается, но я не сдаюсь и не убегаю от кода)Ваш код - это что-то богоподобное, я мучился над этим 3 часа, а вы решили эту задачу в минуты.Учту ваши советы.Благодарю.Спасибо конечно, но если мне понадобится незаменимая помощь , я к вам обращусь, а так буду дальше совершенствоваться, я просто на время забросил python и забыл про регулярные выражения.Можете ли вы предоставить свои контактные данные, а то очень интересно будет поучиться у вас)

Отредактировано sosok43k (Фев. 23, 2017 17:36:32)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version