Вы используете Python 3, где существует строгое разделение между текстом (str
) и данными (bytes
). Текст не может быть записан в файл, если вы сначала не закодировали его явно.
Есть два способа сделать это:
1) Откройте файл в текстовом режиме (возможно, с указанной кодировкой), чтобы строки автоматически кодировались для вас:
with open("lt.txt", 'at', encoding='utf8') as outfile:
outfile.write(hash_digest + '\n') # or print(hash_digest, file=outfile)
Если вы не задаете кодировку самостоятельно при открытии файла в текстовом режиме, будет использоваться кодировка по умолчанию для вашей системы.
2) Кодируйте строки вручную, как вы пытались. Но не пытайтесь смешивать str
с bytes
, как вы, либо используйте байтовый литерал:
hash_digest = hash_digest.encode('utf-8')
with open("lt.txt", 'ab') as outfile:
outfile.write(hash_digest + b'\n') # note the b for bytes
или кодировать после добавления новой строки:
outfile.write((hash_digest + '\n').encode('utf-8'))