Поскольку вы не передаете сведения об исключении, это должно быть догадкой ...
with open('a.txt', 'w') as f:
открывает файл в текстовом режиме с неявным аргументом encoding="utf-8"
. Файлы, открытые в текстовом режиме, позволяют писать только текст str
, а не двоичные bytes
.
Я предполагаю, что вы получаете какую-то ошибку до такой степени, записывая data
, что я предполагаю, что bytes
там. (Открытие файла в двоичном режиме "wb"
исправит это.)
Redis, с другой стороны, не знает о тексте - все строки, которые вы помещаете в Redis, являются просто байтовыми строками, и вам понадобится разобраться с кодированием и декодированием самостоятельно. Вот почему отправка ваших data
байтов в работе. В зависимости от вашей библиотеки Redis, она также может «полезно» сначала кодировать обычные текстовые строки в UTF-8.