TypeError: a bytes-like object is required, not 'str'

2018 年 2 月 22 日
 okface



在 python3 中报错时为啥呀,新手一枚~
3613 次点击
所在节点    Python
12 条回复
ynyounuo
2018 年 2 月 22 日
okface
2018 年 2 月 22 日
@ynyounuo 是我没说清楚,问题是我记得我之前一直都是这么写的啊。我要写成 filename.decod('utf-8')这种吗?
monsterxx03
2018 年 2 月 22 日
1. 统计行数你这写法太繁琐了, open return 的 file 对象可以直接遍历: sum(1 for _ in open(filename))
2. open(filename, 'rb') 是用二进制模式打开,读出来的是 bytes, 你传入的 eol 是 str, 改成用文本 'r' 模式打开
ipwx
2018 年 2 月 22 日
import codecs

with codecs.open(filename, 'rb', 'utf-8') as f
ipwx
2018 年 2 月 22 日
@monsterxx03 看他的参数 eol='\n',可以自定义的。
snoopygao
2018 年 2 月 22 日
论坛的头像规则里说:如果你是男人,请不要用女人的照片做头像,以免误导其他会员
monsterxx03
2018 年 2 月 22 日
@ipwx 要看他真正需求,如果就是统计行数完全不需要自定义换行符,windows/linux python 都能 handle 的,否则这个问题不叫统计行数
okface
2018 年 2 月 22 日
@ipwx thank you ,感谢 10 铜币~
wellsc
2018 年 2 月 22 日
我以为是真人
okface
2018 年 2 月 22 日
@monsterxx03 学习了,这个方法我直接 copy 的,所以没有深究 python 能不能识别\n 和\r\n
okface
2018 年 2 月 22 日
@snoopygao 喜欢陈意涵而已。。。哈哈
ycz0926
2018 年 2 月 22 日
1、b"abcdddd"
2、"sdddd".encode('utf-8')

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/431635

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX