Я использую текстовую приключенческую игру на Python с Twisted, и я думаю, что я принципиально неправильно понял, что возвращается с функцией Twisted dataReceived. У меня есть следующее как часть моего общего кода;Python Twisted: что получается с помощью DataReceived и что я должен использовать вместо этого
def process(self, data):
print "Got command {}, {}".format(data, len(data))
if data == "test":
print "DEBUG: got the test command"
from twisted.internet import reactor, protocol
class MudLoop(protocol.Protocol):
def connectionMade(self):
login(self)
def dataReceived(self, data):
process(self, data)
factory = protocol.ServerFactory()
factory.protocol = MudLoop
reactor.listenTCP(12000,factory)
reactor.run()
строка не отправляется обратно из DataReceived запустит тест функции обработки для него и сделать что-то другое, например, если подключенный клиент входит в «тест», консольный вывод не принимается в соответствии с инструкцией DEBUG, в которой он получил команду тестирования. У меня есть пара теорий о том, почему, во-первых, то, что передается, не является строкой, второе - это то, что, хотя это строка, к ней добавляются невидимые символы (возврат каретки и новая строка?), Которые что не позволяет проверить, что было введено - это подтверждается моим тестом для вызываемой функции процесса, добавляющей длину команды в консоли на новой строке.
Какие из них являются истинными? Или что-то еще? И в любом случае следует ли тестировать строку, возвращенную из dataReceived таким образом? Исследование до того, как я разместил сообщение, похоже, говорит о том, что у других людей не было этой проблемы, но они столкнулись с другими проблемами позже, когда строки получаются в неопределенном порядке от нескольких клиентов. Если я решаю это, мой подход ошибочен, и я просто собираюсь решить следующую проблему?
Проверьте символы возврата и символы новой строки в конце ввода, используйте 'print repr (data)' для отладки ввода. –
Ahh HA! он действительно отправляет тест \ r \ n Есть ли способ, которым я могу удалить это или иначе нормализовать его? – Elomis
На самом деле я никогда не могу написать простой код в функции процесса для нормализации ввода. – Elomis