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