gpt4 book ai didi

python - 使用 Telnet.write() 时出现类型错误

转载 作者:行者123 更新时间:2023-11-28 21:41:02 29 4
gpt4 key购买 nike

我有以下代码:

try:
tn = Telnet(host, str(port))
except Exception as e:
print("Connection cannot be established", e)
traceback.print_exc()
print("You are connected")
tn.write('command?'+'\r\n')
while True:
line = tn.read_until("\n")

当我在机器 X 上运行这段代码时,一切正常,但是当我尝试在另一台机器上运行相同的代码时,我最终遇到以下错误:

 Traceback (most recent call last):
File
"C:/Users/admin/Documents/Projects/terminalManager/terminalManager.py", line 50, in <module>
terminalManager()
File
"C:/Users/admin/Documents/Projects/terminalManager/terminalManager.py", line 16, in __init__
self.connect(terminalBganIp, terminalBganPort)
File "C:/Users/admin/Documents/Projects/terminalManager/terminalManager.py", line 34, in connect
tn.write('AT_IGPS?'+'\r\n')
File "C:\Program Files (x86)\Python\Python3.6.1\lib\telnetlib.py", line 287, in write
if IAC in buffer:
TypeError: 'in <string>' requires string as left operand, not bytes

是我做错了什么还是第二台机器在搞乱我?

编辑:

当我在我的第二台机器上使用 IDLE 调试器时,一切正常。正常运行时似乎无法正常工作,我能做些什么来解决这个问题吗?

最佳答案

我不敢相信相同的代码在另一台具有相同 python 版本的机器上为您工作。

您的问题正是异常所说的 TypeError: 'in <string>' requires string as left operand, not bytes .您需要提供bytestn.write而不是 string .

您可以通过 encode 将字符串转换为字节:

command = "command?" + "\r\n"
tn.write(command.encode("ascii"))

编辑:好吧,有人先于我 :D

关于python - 使用 Telnet.write() 时出现类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45132060/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com