Python:写入 xml 文件时丢失内容
Python: Losing content while writing an xml file
我正在使用 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()
有没有办法避免这个问题?
您的示例可能不完整,但看起来您混合了 minidom 和 lxml 方法来编写文件,这可能会产生一个空白文件,尤其是在您的示例中。
检查您是否对 lxml tree
对象使用 write()
方法
和 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 语句来避免代码中存在错误的这种影响,但是如果您在编写过程时切断进程 => 空白文件
我正在使用 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()
有没有办法避免这个问题?
您的示例可能不完整,但看起来您混合了 minidom 和 lxml 方法来编写文件,这可能会产生一个空白文件,尤其是在您的示例中。
检查您是否对 lxml tree
对象使用 write()
方法
和 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 语句来避免代码中存在错误的这种影响,但是如果您在编写过程时切断进程 => 空白文件