【发布时间】:2014-06-02 23:26:58
【问题描述】:
我最近注意到,当使用utf-8-sig 编码附加到文件时,Python 的行为方式并不明显。见下文:
>>> import codecs, os
>>> os.path.isfile('123')
False
>>> codecs.open('123', 'a', encoding='utf-8-sig').write('123\n')
>>> codecs.open('123', 'a', encoding='utf-8-sig').write('123\n')
以下文本以文件结尾:
<BOM>123
<BOM>123
这不是错误吗?这太不合逻辑了。 谁能向我解释为什么这样做? 为什么他们不设法仅在文件不存在且需要创建时才预先添加 BOM?
【问题讨论】:
-
不,这不是错误;这是完全预期的行为。编解码器无法检测到文件已写入多少内容。
标签: python utf-8 byte-order-mark