我从Github下载了一些代码,用于连接实验室设备:
readBuffer=ctypes.create_string_buffer(1024)
# some C functions modifying readBuffer using ctypes
deviceInfoList=readBuffer.value.split(',')
最后一行显示错误:TypeError: a bytes-like object is required, not 'str'
print(type(readBuffer.value))
显示<class 'bytes'>
,print(readBuffer.value)
显示b'0,NEWPORT 1936-R v1.2.2 04/06/12 SN22955\r;'
。
根据SDK文档文件readBuffer is 'a character buffer with the following format: <DeviceID1>,<DeviceDescription1>;<DeviceID2>,<DeviceDescription2>;<DeviceIDX>,<DeviceDescriptionX>
。代码的最后一行想要提取设备ID(0
)。
Split
应该是一个字符串方法如果我没有弄错,readBuffer.value
看起来像byte
,而错误则抱怨它是string
而不是{{1} }}。这里出了什么问题?
答案 0 :(得分:2)
string
和bytes
都有一个split方法,需要一个相同类型的参数。 ','
不是bytes
对象 - 因此投诉。你想要
deviceInfoList=readBuffer.value.split(b',')