В чем разница при написании с использованием Python и Redis - PullRequest
0 голосов
/ 06 февраля 2020

Когда я пытаюсь записать в файл, используя Python, я получаю ошибку ввода-вывода, но при попытке записать те же данные в redis, я не получаю никакой ошибки, дайте мне знать, в чем будут различия с ними обоими? Если оба пишут с одними и теми же данными, оба должны выдавать ошибку или оба должны работать, но почему один работает, а другой отказывает

with open('a.txt', 'w') as f:
    f.write(data)

1 Ответ

1 голос
/ 06 февраля 2020

Поскольку вы не передаете сведения об исключении, это должно быть догадкой ...

with open('a.txt', 'w') as f:

открывает файл в текстовом режиме с неявным аргументом encoding="utf-8". Файлы, открытые в текстовом режиме, позволяют писать только текст str, а не двоичные bytes.

Я предполагаю, что вы получаете какую-то ошибку до такой степени, записывая data, что я предполагаю, что bytes там. (Открытие файла в двоичном режиме "wb" исправит это.)

Redis, с другой стороны, не знает о тексте - все строки, которые вы помещаете в Redis, являются просто байтовыми строками, и вам понадобится разобраться с кодированием и декодированием самостоятельно. Вот почему отправка ваших data байтов в работе. В зависимости от вашей библиотеки Redis, она также может «полезно» сначала кодировать обычные текстовые строки в UTF-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...