2015-06-04 3 views
-1

Я пытаюсь кодировать переменную «имя пользователя» в Base64, затем записывать ее в текстовый файл и, наконец, декодировать Base64 и читать/печатать.Попытка Base64 кодировать эту переменную

while True: 

username = input("What is your username?: ") 

file = open("newfile.txt", "w") 
file.write(base64.b64encode(username)) 
file.close 

file = open("newfile.txt", "r") 
file.read(base64.b64decode(username)) 
break 

-TypeError- 'str' does not support the buffer interface

То, что я здесь, казалось, самым логичным из того, что я видел.

Я довольно новичок в Python и пробовал весь метод, который я видел онлайн, для Base64 кодировал переменную, и никто не работал.

+0

1) Вы ничего не пишете в файл и 2) нет никаких следов ваших попыток с base64 или особых проблем, с которыми вы столкнулись. – deceze

+0

Извините, я довольно новичок в этом. Я обновил его в любом случае. – user3205119

+0

И возникают ли у вас какие-либо ошибки? – deceze

ответ

0

base64 ожидает и возвращает байты (в python3); но строки должны быть записаны в файлы. здесь пример с явной письменной форме и более компактного чтения:

import base64 

while True: 

    username_str = input("What is your username?: ") 

    with open("newfile.txt", "w") as file_handler: 
     username_bytes = bytes(username_str, 'utf-8') 
     b64_bytes = base64.b64encode(username_bytes) 
     b64_str = b64_bytes.decode('utf-8') 
     file_handler.write(b64_str) 
     # file_handler.close() 
     # close not needed inside the context handler 
    with open("newfile.txt", "r") as file_handler:   
     print(base64.b64decode(bytes(file_handler.read(), 'utf-8')).decode('utf-8')) 
    break 

BTW: файл является зарезервированным ключевым словом и не должны использоваться в качестве переменной.

Смежные вопросы