我正在尝试将代码从Python版本2转换为3。
错误:“ TypeError:需要一个类似字节的对象,而不是'str'
代码使用的是:
i++
我意识到错误与对象的类型有关,但我不知道如何解决该问题。我将不胜感激。谢谢。
答案 0 :(得分:0)
BytesIO
需要字节。因此,当您执行output.write(x)
时,您需要x
的字节类型。问题是line
和newLine
都是字符串类型。
您可以通过编码将它们转换为字节,但是由于您试图将output
写入文件,因此最好的解决方案实际上是将BytesIO
更改为StringIO
。后者不会抱怨line
和newLine
是字符串,并且您将能够调用inputFile.write(output.getvalue())
,只有在输出为StringIO
时才可能。>
答案 1 :(得分:0)
因此,您需要将字符串编码为字节,例如:bytes_like = some_string.encode('utf-8')
,现在它应该可以工作,然后,如果需要字符串,则对字节进行解码,例如string_type = some_bytes.decode('utf-8')
。