Python 以 UTF-8 而不是 ANSI 写入文件

1 投票
1 回答
1677 浏览
提问于 2025-04-18 22:34

我运行了下面这段Python代码,用来创建一个新文件,并把输入文件中的某个字符串替换掉。这个代码运行得很好。但是,输出文件的编码是ANSI,而输入文件是没有BOM的utf-8格式。有没有人能告诉我怎么才能让输出文件的编码和输入文件一样呢?

提前谢谢大家。

import codecs

f1=open(r"D:\Python Programs\New folder\ls.dat","rb")
f2=open(r"D:\Python Programs\New folder\OUTPUT.DAT","wb")

for line in f1:
    s1=line[0:len(line)]
    s3=s1[72:76].replace(str.encode("HKAG"),str.encode("PNAG"))
    s4=s1[0:72]+s3+s1[76:]
    f2.write(s4)

f1.close()
f2.close()

1 个回答

2

使用来自 io 包的 open 编码方式,而不是自己去实现一个。

import io
from __future__ import unicode_literals

with io.open(r"D:\Python Programs\New folder\ls.dat", "r", encoding="utf-8") as f1:
  with io.open(r"D:\Python Programs\New folder\OUTPUT.DAT", "w", encoding="utf-8") as f2:
    for line in f1:
      s1=line[0:len(line)]
      s3=s1[72:76].replace(u"HKAG", u"PNAG")
      s4=s1[0:72]+s3+s1[76:]
      f2.write(s4)

撰写回答