如何测试类似字节的对象?

时间:2017-07-02 19:46:57

标签: python

哪个测试可以判断对象是否为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

1 个答案:

答案 0 :(得分:0)

这几乎是正确的方式,collections.abc.ByteStringtyping.ByteString代表bytesbytearraymemoryview类型,但不代表array.array {1}},所以你需要另一张支票:

def IsBytesLike(obj):
    return isinstance(obj, typing.ByteString) or isinstance(obj, array.array)