Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 4, 2017 17:21:37

Fedy1661
Зарегистрирован: 2017-10-29
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

a bytes-like object is required, not 'str'

Никак не могу найти причину в ошибке, хелп
builtins.TypeError: a bytes-like object is required, not ‘str’

 def save():
    global logger
    logger=[]    
    passwordik = set(glob.glob('logins.txt'))
    checker = set(["logins.txt"])
    if passwordik != checker:
        messagebox.showinfo("Информация", "Не найден файл logins.txt\nСоздание..")
        file = open('logins.txt', "wt")
        pickle.dump(logger, file)
        file.close()
        log()
    else:
        file = open('logins.txt', "w+")
        logger = pickle.load(file) # Выделяется эта строка
        file.close()        
        log()
....

Отредактировано Fedy1661 (Ноя. 4, 2017 17:22:18)

Офлайн

#2 Ноя. 4, 2017 17:36:39

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

a bytes-like object is required, not 'str'

вы все никак не разберетесь

Офлайн

#3 Ноя. 4, 2017 22:23:28

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

a bytes-like object is required, not 'str'

Вот это знатнийший говнокод =) прям клад. Чего только вот это строка стоит

marvellik
set(glob.glob('logins.txt'))
Ну да ладно, и на это бывают причины? когда ты начинающий и из средств программирования у тебя отрывки код, как правило из StackOverflow.com
Ну а по делу, во первых ВСЕГДА нужо показывать полный traceback ошибки, а во вторых думаю что pickle не хочет строки, а хочет байтовые объекты. Поэтому для начала нужно файлы открывать в бинарном режиме ‘wb’ и соответственно строки кодировать в байты с помощью encode() метода строк.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Ноя. 5, 2017 09:37:42

Fedy1661
Зарегистрирован: 2017-10-29
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

a bytes-like object is required, not 'str'

JOHN_16
Вот это знатнийший говнокод прям клад. Чего только вот это строка стоит
Так правильнее?
 def save():
    if os.path.exists("logins.txt"):
       save2()
    else:
        messagebox.showinfo("Информация", "Не найден файл logins.txt\nСоздание..")
        file = open("logins.txt", "wb")
        file.close()
        save2()  

Офлайн

#5 Ноя. 5, 2017 14:30:19

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

a bytes-like object is required, not 'str'

так лучше

  def save():
    if not os.path.exists("logins.txt"):
        messagebox.showinfo("Информация", "Не найден файл logins.txt\nСоздание..")
        file = open("logins.txt", "wb")
        file.close()
    save2()
а вообще для вашего кода это все пишется в функции регистрации. то есть запускается ваша прога сразу с окном входа, после ввода логина и пароля проверяется наличие файла данных если его нет или есть но нет такого пользователя то выводиться инфа такого пользователя нет и вызывается функция регистрации из которой этот файл и создается с данными

Отредактировано marvellik (Ноя. 5, 2017 14:53:11)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version