2

Python で minidom (とりわけ) を使用して、ディレクトリからファイルのリストを取得し、変更時刻などを取得しています。データを作成し、そのデータを XML ファイルに書き込みます。データは問題なく出力されますが、データをファイルに書き込もうとすると、ディレクトリ内のファイルの 1 つの 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私が期待している値を返すので、書き込み機能が間違っていると思います。

4

1 に答える 1

2

私があなたのitentを理解したなら

ファイルごとに1つの異なるドキュメントを作成してはならないため、ドキュメントの作成と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 に答える