另一个TypeError:需要类似字节的对象,而不是' str'

时间:2017-04-17 20:40:08

标签: python telnetlib

我是Python中的一个完整的新手,但自1980年以来,我一直在(Liberty-)Basic中进行编程。

使用Python 3.5.2我正在测试这个脚本:

import time, telnetlib

host    = "dxc.ve7cc.net"
port    = 23
timeout = 9999

try:
    session = telnetlib.Telnet(host, port, timeout)
except socket.timeout:
    print ("socket timeout")
else:
    session.read_until("login: ")
    session.write("on0xxx\n")
    output = session.read_some()
    while output:
        print (output)
        time.sleep(0.1)  # let the buffer fill up a bit
        output = session.read_some()

任何人都可以告诉我为什么我会得到 TypeError:需要类似字节的对象,而不是' str' 以及我如何解决它?

2 个答案:

答案 0 :(得分:1)

与Python 2.x不同,您不需要对通过网络发送的数据进行编码,您必须使用Python 3.x. 因此,您要发送的所有内容都需要使用.encode()函数进行编码。您收到的所有内容都需要使用.decode()进行解码。

答案 1 :(得分:0)

在Python 3中(但在Python 2中不是),str and bytes are distinct types无法混合。你不能直接将30OCT2015:00:00:00 30OCT2015:00:00:00 29OCT2015:00:00:00 30OCT2015:00:00:00 写入套接字;你必须使用str。只需在字符串文字前加bytes前缀即可使其成为b字面值。

bytes