程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

TypeError:在Python3中写入文件时需要类似字节的对象,而不是'str'

发布于2019-08-21 09:09     阅读(859)     评论(0)     点赞(5)     收藏(1)


我最近迁移到了Py 3.5。这段代码在Python 2.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的问题,但这个小小的陈述让我烦恼。


解决方案


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

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'



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/49961/962672d3dc64afe647fc/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

5 0
收藏该文
已收藏

评论内容:(最多支持255个字符)