我的函数需要接受字符串或二进制数据(例如从文件中读取)。如果是字符串,我想将其转换为原始数据(bytes
或bytearray
)。
在Python 3中,我可以使用 data = bytes(data, 'utf8')
。但是,在Python 2中失败了,因为它只接受一个参数。反之亦然,data = bytes(data)
在Python 2中有效,但在Python 3中则会抱怨需要一个编码才能工作。
为了说明问题,让我们假设所有输入(如果是字符串)都是UTF-8编码。那么,有没有比以下代码更好的方法来实现我所需的功能:
try:
data = bytes(data, 'utf8')
except:
data = bytes(data)
注意,data.encode()
在Py3中有效,但在Py2中会失败,如果字符串包含非ASCII字节。