为了账号安全,请及时绑定邮箱和手机立即绑定

TypeError:在Python 3中写入文件时需要一个类似字节的对象,而不是‘str’。

TypeError:在Python 3中写入文件时需要一个类似字节的对象,而不是‘str’。

哔哔one 2019-07-04 13:15:10
TypeError:在Python 3中写入文件时需要一个类似字节的对象,而不是‘str’。我最近迁移到Py 3.5。这段代码在Python2.7中运行正常:with open(fname, 'rb') as f:     lines = [x.strip() for x in f.readlines()]for line in lines:     tmp = line.strip().lower()     if 'some-pattern' in tmp: continue     # ... code升级到3.5之后,我得到了:TypeError: a bytes-like object is required, not 'str'最后一行(模式搜索代码)出现错误。我试过用.decode()函数在语句的任何一方,也尝试:if tmp.find('some-pattern') != -1: continue-徒劳无功。我能够迅速解决几乎所有的2:3问题,但这个小小的声明困扰着我。
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

您以二进制模式打开文件:

with open(fname, 'rb') as f:

这意味着从文件中读取的所有数据将作为bytes对象,而不是str..然后,不能在包含测试中使用字符串:

if 'some-pattern' in tmp: continue

你得用一个bytes对象进行测试。tmp相反:

if b'some-pattern' in tmp: continue

或者以文本文件的形式打开该文件,方法是替换'rb'模式与'r'.


查看完整回答
反对 回复 2019-07-04
?
慕容708150

TA贡献1831条经验 获得超4个赞

可以通过以下方式对字符串进行编码:.encode()

例子:

'Hello World'.encode()


查看完整回答
反对 回复 2019-07-04
  • 3 回答
  • 0 关注
  • 894 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信