Python Paramiko Channel.recv的实际返回值类型是什么?

问题描述

我有一个版本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中,该方法返回一个字符串。