Python3中read(1)语句报TypeError: can't concat str to bytes求助
解决思路:TypeError: can't concat str to bytes
报错根源
你代码里的self.infile.read(1)返回的是字节对象(bytes),但你把它和字符串'T'直接做比较——Python 3严格区分字节和字符串类型,不能直接对比,所以抛出这个错误。
具体解决步骤
- 直接适配字节类型:如果你的输入流确实是二进制模式(比如读取二进制文件、网络流),把对比的字符串改成字节形式即可:
while self.infile.read(1) != b'T': pass - 确保流是文本模式:如果你的输入应该是文本,检查
infile的创建方式:- 若用
codecs.open()打开文件,必须指定encoding参数,比如codecs.open("file.txt", "r", encoding="utf-8") - 若基于已有二进制流包装
codecs.StreamReader,要传入对应编码,比如codecs.StreamReader(binary_stream, encoding="utf-8")
- 若用
- 排查字节来源:在报错行前加一行打印,确认返回值类型,快速定位问题:
char = self.infile.read(1) print(type(char)) # 看输出是<class 'bytes'>还是<class 'str'> while char != 'T': # 或者b'T',根据打印的类型调整 char = self.infile.read(1)
内容的提问来源于stack exchange,提问作者jovian
相关产品推荐
相关产品推荐

