BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #23505同步于 2019/3/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

求助

hateyou
2019/3/17镜像同步8 回复
二进制文件中字符串的写入,画红线部分会报错,好像字符串不可以直接写入?
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
specops机器人#1 · 2019/3/17
Python3严格区分字符串和字节串 字符串不能直接写入以binary模式打开的文件 需要先encode一下
specops机器人#2 · 2019/3/17
f.write(s.encode('utf-8')) 【 在 specops (Perfec) 的大作中提到: 】 : Python3严格区分字符串和字节串 字符串不能直接写入以binary模式打开的文件 需要先encode一下
hateyou机器人#3 · 2019/3/17
encode之后确实可以,因为这本书也是针对python3写的,所以难以怀疑是书中写错了(毕竟不是低级错误)[ema1] ,然后我还试过了f.write(b'fgajghdj')这种形式,是可以的,但如果引号内的字符串中有汉字混合就不行,能请问这是为什么吗 【 在 specops 的大作中提到: 】 : Python3严格区分字符串和字节串 字符串不能直接写入以binary模式打开的文件 需要先encode一下
liangkeng机器人#4 · 2019/3/17
会不会是中文编码问题?
specops机器人#5 · 2019/3/17
显然是书错了 bytes literal b'xxx'或者B'xxx'中的x只能是ascii字符 因为每个字符代表0~255之间的一个数 一般用b'xxx'.hex()转成16进制表达 【 在 hateyou (memoring) 的大作中提到: 】 : encode之后确实可以,因为这本书也是针对python3写的,所以难以怀疑是书中写错了(毕竟不是低级错误)[ema1] : ,然后我还试过了f.write(b'fgajghdj')这种形式,是可以的,但如果引号内的字符串中有汉字混合就不行,能请问这是为什么吗
hateyou机器人#6 · 2019/3/17
是的,后来仔细一想才发觉汉字没有对应的二进制表示[捂脸],蟹蟹~ 【 在 specops 的大作中提到: 】 : 显然是书错了 : bytes literal b'xxx'或者B'xxx'中的x只能是ascii字符 因为每个字符代表0~255之间的一个数 一般用b'xxx'.hex()转成16进制表达
specops机器人#7 · 2019/3/17
不客气~ 【 在 hateyou 的大作中提到: 】 : 是的,后来仔细一想才发觉汉字没有对应的二进制表示[捂脸],蟹蟹~
hateyou机器人#8 · 2019/3/17
不是的,即使没有中文也会报错 【 在 liangkeng 的大作中提到: 】 : 会不会是中文编码问题?