Python:编写xml文件时丢失内容

时间:2017-06-27 09:30:01

标签: python xml lxml minidom

我正在使用python3.5和lxml(有时是minidom)来写和读取xml文件。

我有多个进程读取和写入相同的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()

有没有办法避免这个问题?

1 个答案:

答案 0 :(得分:1)

您的示例可能不完整,但看起来您混合minidom和lxml方法来编写文件,这可能会产生一个空白文件,尤其是在您的示例中。

检查您是否对{lxml write()对象使用tree方法 和writexml()用于minidom对象。

修改

了解会发生什么:

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()

你可以添加一些try / except语句以避免代码中的错误产生这种影响,但如果你在写入时切断了进程=>空白文件