Python 以 UTF-8 而不是 ANSI 写入文件
我运行了下面这段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)