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

VPf*_*PfB 5 python

哪个测试可以判断对象是否是类似字节的对象

通常,字符串或类似字节的对象可以出现在某些函数调用中.在这种情况下,一个简单但间接的解决方案就是if not isinstance(obj, str).

我发现 字节串collections.abc.它似乎给出了正确的答案,但我不确定这是否是正确的方法:

>>> import collections.abc as cabc
>>> isinstance(bytes(),cabc.ByteString)
True
>>> isinstance(bytearray(),cabc.ByteString)
True
>>> isinstance("string",cabc.ByteString)
False
Run Code Online (Sandbox Code Playgroud)

For*_*Bru -1

这几乎是正确的方式collections.abc.ByteString,因为 、 以及typing.ByteString代表类型bytesbytearray、 和memoryview,但不是array.array,因此您需要另一次检查:

def IsBytesLike(obj):
    return isinstance(obj, typing.ByteString) or isinstance(obj, array.array)
Run Code Online (Sandbox Code Playgroud)