2017-06-27 1 views
1

私はpython3.5とlxml(といつかminidom)を使ってXMLファイルを作成しています。Python:XMLファイルを書きながらコンテンツを失う

同じxmlファイルを読み書きする複数のプロセスがありますが、ファイルが完全に空白になることがあります。これは、手作業でプロセスを閉じるときにいつか起こります。この問題を回避する方法が

from lxml import etree as le 
file = open("generalList.xml", 'r') 
tree = le.parse(file) 
file.close() 
for bad in tree.xpath("//unit"): 
    ip = bad[0].text 
    if ip == data[1]: 
     bad.getparent().remove(bad) 
file = open("generalList.xml", 'wb') 
tree.writexml(file) 
file.close() 

あります:

これは、XMLを変更する機能の例ですか?

答えて

1

あなたの例は不完全かもしれませんが、ファイルを書き込むためにminidomとlxmlのメソッドが混在しているように見えます。これは、特にあなたの例では空白のファイルが生成される可能性があります。

チェックあなたはlxmlのtreeオブジェクト とminidom・オブジェクトのwritexml()ためwrite()方法を使用している場合。

EDIT:

が起こることができるかを理解するために:

file = open("versions.xml", 'wb') # file is blank 

import time # add this to take a moment to check the blank file in your folder 
time.sleep(60) 

# here, if shit happens, you lose everything 

tree.write(file) # then the file is written and I/O closed 
file.close() 

あなたは、コードのバグにこの影響を回避するために文を除いて/いくつかの試みを追加することができますが、プロセスの中を切った場合それは書いている=>空白のファイル

+0

ありがとう!明日の朝、私は試してみるよ。 –

+0

ミニドム書き込み関数でlsmlを使ったところ、ありがとう! しかし、プロセスがXMLを書き込んでいる間に電源を切ると、ファイルが失われる可能性はありますか? –

+0

@ G.Threepwood、私は死のプロセスの危険を説明するための答えを編集する – PRMoureu

関連する問題