我有这个有线协议我正在实现,我必须将二进制和ASCII数据写入同一个文件,我怎样才能同时执行此操作,或者至少结果将是具有混合asci的文件和二进制数据?
我知道open("myfile", "rb")
确实在二进制模式下打开myfile,除了我找不到解决方法如何解决这个问题!
答案 0 :(得分:1)
您写入文件的内容实际上是" bytes"。 Python 2或3(*只是在Python2中它是str
,我们将其更改为在Python 3中更清晰明确地bytes
}。
所以:
with open("file.ext", "w") as f:
f.write(b"some bytes")
示例:
bash-4.3$ python
Python 2.7.6 (default, Apr 28 2014, 00:50:45)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> with open("file.ext", "w") as f:
... f.write(b"some bytes")
...
>>>
bash-4.3$ cat file.ext
some bytesbash-4.3$
如果您正在处理Unicode字符串(Python 3中的 str
,Python 2中的unicode
),通常会使用编码。 e.g:
s = "Hello World!"
with open("file.ext", "w") as f:
f.write(s.encode("utf-8"))
注意:如评论中所述; open(filename, "wb")
并没有真正按照您的想法行事 - 它只会影响新行的处理方式。
答案 1 :(得分:1)
在Python 2下,唯一的差异二进制模式使得在写入时如何翻译换行符; \n
将转换为与平台相关的行分隔符。
换句话说,只需将ASCII字节字符串直接写入二进制文件,就Python而言,ASCII数据和二进制数据之间没有区别。