class Client(basic.LineReceiver):
def lineReceived(self, line):
delimiter = '\n'
print "%s" % line
Строка delimiter = '\n'
здесь не имеет полезных последствий.Он определяет новое имя в локальной области действия функции lineReceived
, а затем игнорирует это локальное имя.
Я думаю, что вы намеревались сделать:
class Client(basic.LineReceiver):
delimiter = '\n'
def lineReceived(self, line):
print "%s" % line
Этоопределяет новый атрибут Client
класса delimiter
, который управляет тем, как базовый класс basic.LineReceiver
разделяет строки.
Однако ваша программа-пример определяет только Client
, она не 'на самом деле использовать его.Так что это не причина проблемы.Однако причина проблемы очень похожа.Echo
используется для обработки стандартного ввода и вообще не перекрывает стандартный разделитель LineReceiver
.По умолчанию используется значение '\r\n'
, которое не является разделителем строк, используемым при стандартном вводе Windows.
Запустите определение Echo
следующим образом:
class Echo(basic.LineReceiver):
delimiter = '\n'
, и я думаю, что программа будетведите себя так, как вам хочется, поскольку Windows использует «\ n» для разделения строк на стандартном вводе (хотя нет компьютера с Windows, чтобы это проверить, поэтому вам может потребоваться проверить дважды; если это , а не , случай,Очень полезным ответом было бы объяснить, что такое разделитель ; если это так, то проверка этой информации также будет хорошей вещью).