我最近注意到,使用 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
这不是一个bug吗?这样做完全不合逻辑。 有没有人能解释一下为什么要这样做? 为什么他们不能在文件不存在且需要创建时才添加BOM?