2

我在 Python 中使用 minidom(以及其他)从目录中提取文件列表,获取它们的修改时间,其他杂项。数据,然后将该数据写入 XML 文件。数据打印得很好,但是当我尝试将数据写入文件时,我只获取目录中一个文件的 XML。这是我的代码(为了可读性/空间,我删除了大量的createElementappendChild方法以及任何不相关的变量):

for filename in os.listdir((os.path.join('\\\\10.10.10.80\Jobs\success'))):

    doc = Document()
    modTime = datetime.datetime.fromtimestamp(os.path.getmtime('\\\\10.10.10.80\Jobs\success\\'+filename)).strftime('%I:%M:%S %p')
    done = doc.createElement('Printed Orders')
    doc.appendChild(done)
    ordernum = doc.createElement(filename)
    done.appendChild(ordernum)
    #This is where other child elements have been removed

    print doc.toprettyxml(indent='  ')
    xmlData = open(day_path, 'w')
    xmlData.write(doc.toprettyxml(indent='  '))

希望这足以了解发生了什么。由于print返回我期望的值,我认为 write 函数是我出错的地方。

4

1 回答 1

2

如果我明白你的意思

您不能为每个文件创建一个不同的文档,因此您必须将文档的创建和 xml 文件的编写放在循环之外

from xml.dom.minidom import Document 
import os,datetime
path = "/tmp/"
day_path ="today.xml"
doc = Document()
done = doc.createElement('Printed Orders')

for filename in os.listdir((os.path.join(path))):

    print "here"
    modTime = datetime.datetime.fromtimestamp(os.path.getmtime(path+filename)).strftime('%I:%M:%S %p')
    doc.appendChild(done)
    ordernum = doc.createElement(filename)
    done.appendChild(ordernum)
    #This is where other child elements have been removed

print doc.toprettyxml(indent='  ')
xmlData = open(day_path, 'w')
xmlData.write(doc.toprettyxml(indent='  '))

编辑:对于 HierarchyRequestErr 错误,您还必须将根元素的创建放在循环之外

于 2012-11-08T18:06:16.653 回答