lines+=line/ TypeError: can't concat str to bytes

lines+=line/ TypeError: can't concat str to bytes

我需要将保存在 microSD 上的 arduino 数据传递到我的 GUI 的 sqlite 数据库中。除了能够修复此错误之外,任何人都可以帮助我将数据传递到数据库吗?

lines=b''

with serial.Serial('COM5',9600,timeout=2) as ser:
    line = ser.readline()
    line = line.decode("utf-8")
    lines+=line

您上面发布的代码与错误不符。应该是

lines += line 而不是 lines += lines

line 在您的代码中是一个 str 对象并且 lines 被定义为 byte.

所以你可以这样做: lines += bytes(line, 'utf-8') 消除错误。

或者您可以不在线调用 decode 并将其保留为字节。

我假设您使用的是 Python 3(最好在您的问题中指定此信息)。

此外,我假设 lines+=lines 是写问题时引入的错字,您的程序使用 lines+=line.

read() 的 pySerial 文档说它是 returns 字节,所以很可能 readline() 也是 returns 字节。当您执行 line.decode("utf-8") 时,您正在使用从设备获得的字节字符串来创建文本字符串。然后您尝试将 line(类型 str)附加到 lines(类型 bytes,因为您使用字节串文字 b'' 创建了它),并且导致错误。

您应该可以通过以下方式解决此问题:

  1. 创建 lines 作为文本字符串 (lines = '')
  2. 在将 line 附加到 lines
  3. 之前不对其进行解码

你选择哪一个可能取决于设备提供的信息是否实际上是文本的并且保证在解码步骤不会失败,或者它是否实际上是二进制的并且需要在程序的后面进行解析。