问题描述
我有一个版本2.7的旧Python脚本,该脚本使用函数Paramiko Channel.recv()
方法。我正在尝试将该脚本迁移到Python版本3(和Paramiko 2.7.1)中,但是文档中说:
:返回:以
str
/bytes
的形式接收数据。
由于从Python 2迁移到Python 3的主要问题是不同的基字符串,因此我需要对返回类型进行更具体的说明。
该函数的返回类型取决于什么?或者:如何确定返回值始终相同(例如字节字符串)?
一些代码段:
t = paramiko.Transport(socklike_obj)
t.start_client()
t.auth_password(usr,pw)
chan = t.open_session()
nbytes = 2**16-1 # 65535
out = chan.recv(nbytes)
while out != b'': # or: out != ''
if b'\n' in out or b'\r' in out:
parts = out.splitlines()
解决方法
在Python 3中,该方法始终返回bytes
。
在Python 2中,该方法返回一个字符串。