哪个测试可以判断对象是否为bytes-like object?
通常,字符串或类字节对象可以出现在某些函数调用中。在这种情况下,一个简单但间接的解决方案是if not isinstance(obj, str)
。
我在collections.abc
找到了ByteString。它似乎给出了正确的答案,但我不确定这是否是正确的方法:
>>> import collections.abc as cabc
>>> isinstance(bytes(),cabc.ByteString)
True
>>> isinstance(bytearray(),cabc.ByteString)
True
>>> isinstance("string",cabc.ByteString)
False
答案 0 :(得分:0)
这几乎是正确的方式,collections.abc.ByteString
和typing.ByteString
代表bytes
,bytearray
和memoryview
类型,但不代表array.array
{1}},所以你需要另一张支票:
def IsBytesLike(obj):
return isinstance(obj, typing.ByteString) or isinstance(obj, array.array)