2012-11-08 62 views
2

我在Python中使用minidom(其中包括)從目錄中拉取文件列表,獲取其修改時間,其他雜項。數據,然後將該數據寫入XML文件。數據打印很好,但是當我嘗試將數據寫入文件時,我只能獲取目錄中某個文件的XML。這裏是我的代碼(我已刪除的createElementappendChild方法一個良好的金額以及爲可讀性/空間着想任何非相關變量):寫入XML文件 - 基於變量的多個標籤

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返回了我期望的值,我認爲寫函數是我出錯的地方。

回答

2

如果我明白你的itent

你不能爲每個文件創建一個不同的文件,所以你必須把文檔的創建和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錯誤,你必須把根元素創建循環也

+0

這是我的意圖,外面包含所有數據的一個單一的文件(Ultimatel y它會每天創建一個文件)我嘗試了你的建議,但是輸出文件仍然只包含'os.listdir'中的一個文件的XML。最重要的是,'print'也只返回一個文件,其中就像之前它把所有的人都歸還了。另外,在循環外部移動'doc = Document()'會返回錯誤:'HierarchyRequestErr:兩個不允許的文檔元素' –

+1

下次創建一個自己的內容示例以便我們可以輕鬆地進行測試 –

+0

謝謝@Xavier Combelle在移動創建根元素一切正常。下次我會確保提供一個更友好的測試例子。 –