Python “объект 'NoneType' не имеет никакого атрибута, 'кодируют'”

Есть два подхода, которые используются.

В прошлом было принято использовать аппаратное управление потоком. При этом используется дополнительный провод в каждом направлении. Отправитель ждет, пока провод не покажет, что получатель готов. Когда приемник не готов к приему данных, он сигнализирует другой стороне. Аппаратные средства буферизуют как минимум один байт и, если буфер заполнен, сигнализируют другой стороне не отправлять по этому проводу.

Это менее распространено сегодня. UART настолько медленны по сравнению с современным оборудованием, а большие буферы настолько дешевы и просты в обеспечении, что проблема больше не возникает. Отправитель просто заполняет аппаратный буфер получателя, а получатель периодически очищает аппаратный буфер. Программное обеспечение должно было бы долго игнорировать буфер, чтобы он переполнился.

Промежуточным решением является использование управления потоком данных в потоке данных. Как правило, два символа зарезервированы, один для остановки потока и один для его возобновления. Получатель отправляет символ управления потоком отправителю, если его буфер приближается к полному, и еще один, если его буфер приближается к пустому. Это действительно полезно, только если поток данных не должен обрабатывать двоичные данные. Это чрезвычайно редко и традиционно использовалось главным образом для соединений, на которых был человек на одном конце. Вы также можете приостановить поток, если информация поступает быстрее, чем вы могли ее прочитать.

Как правило, используемые протоколы допускают переполнение и включают некоторую форму подтверждения высокого уровня и / или повторной передачи в зависимости от ситуации. Одно устройство может подождать, пока другая сторона отправит какой-то ответ на свою команду, и, если оно не получит, повторите команду. Протокол разработан так, чтобы не делать ничего страшного, если команда получена дважды, поскольку это может быть потерянный ответ.

5
задан S.Lott 5 January 2009 в 19:36
поделиться

2 ответа

> sys.stdout.write(entry["title"]).encode('utf-8')

Это - преступник. Вы, вероятно, имеете в виду:

sys.stdout.write(entry["title"].encode('utf-8'))

(Заметьте положение последней закрывающей скобки.)

12
ответ дан 18 December 2019 в 09:54
поделиться

Позволяет попытке разрешить часть беспорядка в сообщении об исключении.

Вызов функции

sys.stdout.write(entry["title"])

Возвраты Ни один. ".encode ('utf-8')" вызов к закодировать функции на том, что возвращается вышеупомянутой функцией.

Проблема состоит в том, что Ни один не имеет закодировать функции (или закодировать атрибута) и таким образом, Вы получаете ошибку атрибута, которая называет тип, Вы пытались получить атрибут и атрибут, который Вы пытались получить.

5
ответ дан 18 December 2019 в 09:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: