kuc*_* 23 2 python ascii character-encoding
我认为这应该工作:
file = open('filename.ppm', 'wb')
file.write('upper\nlower'.encode(encoding='ascii'))
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,虽然没有换行符;filename.pmm使用记事本打开时,其中包含“ upperlower”。
在中指定编码open():
>>> with open("filename.ppm", "w", encoding="ascii") as f:
... f.write("upper\nlower")
$ cat filename.ppm
upper
lower $
Run Code Online (Sandbox Code Playgroud)
该open()函数的文档可能会提供一些线索,说明当前方法为何会为您带来意想不到的效果。
首先,关于换行和\nvs \r\n:
将输出写入流时,如果换行符为None,则写入的所有\ n字符都将转换为系统默认的行分隔符
os.linesep。如果换行符是''或'\ n',则不会进行翻译。如果换行符是其他任何合法值,则将写入的所有“ \ n”字符转换为给定的字符串。
我的猜测是,就您而言,因为您正在将字节写入输出流,所以在将“原始”字节写入文件时可能不会发生转换。
值得一提的最后一件事是使用encoding="ascii"。在这种情况下,这实际上并不重要,因为ASCII是Unicode的子集,并且所有字符都位于ASCII范围内。
>>> all(i.isascii() for i in "upper\nlower")
True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |