Найти - Пользователи
Полная версия: Непоняточка.Помогите
Начало » Python для новичков » Непоняточка.Помогите
1 2
sosok43k
 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
doza_and
sosok43k
но помогите не сортируются
А у вас и намека нет на сортировку. Нужна фильтрация?
Тогда пожалуйте сюда https://ru.wikipedia.org/wiki/Grep
А по поводу кода, я не знаю как вам ответить, править нет смысла. Начнем так, напишите в коде комментарии что вы имели ввиду, и зачем она написана напротив каждой строчки.
sosok43k
 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
 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("Вы ввели неправильно")  # исключение
или вот еще, я экспериментировал.
doza_and
 #!! 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("Вы ввели неправильно")  # исключение
sosok43k
doza_and
Вас понял, пойду исправлять,спасибо.
sosok43k
doza_and
А что делать, если в 2 файла записывается только одна почта с паролем(hotmail,mail),а в (gmail), записывается все почты.
doza_and
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)
doza_and
sosok43k
пойду исправлять,спасибо.
Да вы не спешите, продумайте план. лучше сейчас обсудить чем бегать туда сюда
Можете поставить ТИмвюер и кинуть в личку id, мне кажется проще вам устно объяснить чем переписываться

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

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


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