楼主:
jijuan 2019-02-20 11:20:55文件上的说明是直到预期的byte字串才读进来,用PTT来测试的话
import telnetlib
import time
tn = telnetlib.Telnet('ptt.cc')
account = 'username'.encode('utf-8')
password = 'password'.encode('utf-8')
tn.read_until(b'test', timeout=10)
tn.write(account + b'\r\n')
tn.read_until(b'test', timeout=10)
tn.write(password + b'\r\n')
time.sleep(2)
tn.write(b'\r\n')
发现这样还是可以成功登入,比方说一开使要判断是否有'请输入代号'的字串,有的话才
输入帐号,可是就算是用其它的字符去判断还是没有差别。然后又看到文件后面说:
When no match is found, return whatever is available instead, possibly empty b
ytes.
所以应该是没有读到预期的字串,所以就把能读的读进来这样。原本以为如果预期的字串
一直都没来,timeout 到了之后就什么也不读,也就是为空,然后借此去判断是否读入预
期的字串。
后来又发现只写这样也能登入,当然这是因为知道输入帐号后接着输入密码的缘故。
time.sleep(2)
tn.write(account + b'\r\n')
time.sleep(2)
tn.write(password + b'\r\n')
所以我不太明白read_until()的用途?另外有看到另一种写法是用 read_very_eager(),
然后用字串是否在读入的内容里判断这样,像是
if read in tn.read_very_eager():
想请问如果要判断当指定的字串被读入要执行对应的动作时,该怎么写比较好。