Python 2.7.1写入Unicode XML文件时encoding参数报错,求解决方案
Python 2.7 写入UTF-8 XML文件的正确写法
嘿,这个问题我太熟悉了!Python 2.7的内置open()函数不支持encoding这个关键字参数——这个参数是Python 3.x版本才引入的新特性。要在Python 2.7里正确写入UTF-8编码的XML文件,有两种常用的靠谱方案:
方案1:用codecs.open()(推荐)
Python 2.7专门提供了codecs模块来处理带编码的文件操作,这是最规范的做法:
import codecs # 注意路径写法:要么用双反斜杠,要么加r前缀用原始字符串 filepath = r'G:\Kodi EPG\ChannelGuide.xml' with codecs.open(filepath, "w", encoding='UTF-8') as xml_file: xml_file.write(file_blanker) # 划重点:with语句会自动帮你关闭文件,不需要手动调用xml_file.close()
方案2:手动编码后用二进制模式写入
如果不想额外导入模块,也可以先把字符串编码成UTF-8字节,再以二进制模式打开文件写入:
filepath = r'G:\Kodi EPG\ChannelGuide.xml' with open(filepath, "wb") as xml_file: # 用"wb"表示二进制写入模式 # 如果file_blanker是unicode类型,直接encode就行;如果是str类型,确保它本身是UTF-8编码的 xml_file.write(file_blanker.encode('UTF-8'))
几个额外提醒:
- Python 2.7里的字符串分两种:
str(字节串)和unicode(Unicode字符串)。如果file_blanker是unicode类型,用方案1更省心;如果是str类型,要确保它本身已经是UTF-8编码的,不然可能会出现乱码。 - 路径里的反斜杠:Python会把
\当成转义字符,所以要么写成\\,要么在字符串前面加r(原始字符串),避免路径解析出错。 - 你的原代码里写了
xml_file.close,不仅少了括号(调用方法要加()),而且with语句已经自动处理了文件关闭,这行完全可以删掉。
内容的提问来源于stack exchange,提问作者gdogg371
相关产品推荐
相关产品推荐

