我是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' 以及我如何解决它?
答案 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