You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:30:40