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

2018-02-22 13:51:39 +08:00
 okface



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

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

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

https://www.v2ex.com/t/431635

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

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

© 2021 V2EX