我可以使用python打开一个XML文件,对其进行格式化,然后再次保存吗



你好,Python开发人员,

我想写一个python脚本,在目录中搜索任何扩展名为"的文件;。err";,然后格式化文件(这是一种XML格式(,然后用正确的格式覆盖文件。这是我迄今为止的代码:

import xml.dom.minidom
import glob
import os
path = "/qond/apps/tomcat_qx/webapps/qxiqonddb/qxtendQueues/qdocqueue/responses/"
os.chdir(path)
for file in glob.glob("*.err"):
with open(path + file) as f:
xml_data = f.read()
xml = xml.dom.minidom.parse(xml_data)
xml_formatted = dom.toprettyxml()
f.write(xml_formatted)
f.close()

非常感谢!

编辑:我目前面临的上述代码问题是:

Traceback (most recent call last):
File "qxtend_formatter.py", line 12, in <module>
xml = xml.dom.minidom.parse(xml_data)
File "/usr/lib64/python2.6/xml/dom/minidom.py", line 1918, in parse
return expatbuilder.parse(file)
File "/usr/lib64/python2.6/xml/dom/expatbuilder.py", line 922, in parse
fp = open(file, 'rb')
IOError: [Errno 36] File name too long: '<?xml version="1.0" encoding="UTF-8"?>n<soapenv:Envelope xmlns:soapenv="http://schemas.xm.....

它似乎试图将文件名保存为文件内容,但我希望它保留任何文件名。

我通过做两件事解决了这个问题:

  1. 确保操作系统用户可以完全访问该文件(chmod 777(
  2. 创建要读取的".f"实例和要写入文件的".fl"实例

我的代码现在看起来像这样:

from xml.dom import minidom
import glob
import os
path = "/qond/apps/tomcat_qx/webapps/qxiqonddb/qxtendQueues/qdocqueue/responses/"
os.chdir(path)
for file in glob.glob("*.err"):
with open(file, "r") as f:
xml_data = f.read()
doc = minidom.parseString(xml_data)
with open(file, "w") as fl:
fl.write(doc.toprettyxml(indent="  ", newl="n"))

相关内容

最新更新