首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python3中将原始字节写入文件会导致意外的输出

问在Python3中将原始字节写入文件会导致意外的输出
EN

Stack Overflow用户
提问于 2016-04-04 05:53:45
回答 1查看 5.8K关注 0票数 0

所以,我有一个代码:

代码语言:javascript
复制
f = open("crash.txt", "w")
junk = ("\xCC" * 1028)
f.write(junk)
f.close()

当我在Windows(3.5.1)上运行这个文件时,我会得到一个文件,文件中有重复的“CC”作为十六进制字符。这是意料之中的。

但是,在Linux(Python3.4.2)上运行时,我会将“c38c”作为十六进制字符重复使用。

我不理解Linux上的输出。为什么会发生这种事,我该怎么解决。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-04 06:54:20

您不是在编写原始字节。默认情况下,Python 3使用Unicode字符串,必须对这些字符串进行编码才能将它们写入文件。默认情况下,open()使用文本模式,用于编码文本的编码是locale.getpreferredencoding()。在美国Windows上,即cp1252,但在Linux上,它通常是utf8。

b'\xc3\x8c'是用utf8编码的'\xcc'。

b'\xcc'是用cp1252编码的'\xcc'。

以二进制模式打开文件,写字节字符串而不是Unicode来写“原始”字节。

代码语言:javascript
复制
with open("crash.txt", "wb") as f:
    junk = b"\xCC" * 1028
    f.write(junk)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36395387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档