2015-08-31 1 views
0

Когда я использую read_eager или read_very_eager в соединении telnet, то write() дает дополнительный символ. Это не соответствует логике, которую я реализовал.с использованием функции read() в python дает дополнительные символы или символы в следующей функции write()

login = session.read_very_eager() 
print login 

if login.find("Login incorrect") == 0: 
    print "incorrect username or password" 
else: 
    print "login successful" 

session.write("logout" + "\n") 

Это фрагмент кода, который я использовал. Последний write() фактически пишет «% logout» в терминале. Код отлично работает, когда я комментирую заявление login = session.read_very_eager().

Может кто-нибудь помочь мне понять, почему это происходит, и любое возможное решение, которое я могу использовать?

+2

Добро пожаловать в StackOverflow. Для будущих вопросов, пожалуйста, правильно отформатируйте фрагмент кода (см. Здесь: http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks) –

ответ

0

Я не знаком с тем, что именно вы здесь делаете, но, по моему опыту, дополнительные символы обычно решаются путем правильной кодировки. вы можете попробовать попробовать. Ваш вопрос не является достаточно полным. Я не уверен, что вы хотите сделать, но вы можете использовать data.encode('utf8'), прежде чем он будет записан в файл.

+0

Спасибо середине. На самом деле, я смог его решить, добавив символ backspace в мою функцию write(). Таким образом, я смог избежать лишнего символа% в том, что я пытаюсь написать на консоль. Хотя я не думаю, что это правильный путь, он работает на данный момент. В любом случае, я попробую метод кодирования, который вы предложили. –

+0

Да, это определенно не так, и да, попробуйте кодирование, которое должно решить проблему. – mid

Смежные вопросы