Ich habe den folgenden Code gespeichert werden:XML Attributmodifikation nicht
def incrCount(root):
root.attrib['count'] = int(root.attrib['count']) + 1
# root.set('count', int(root.attrib['count']) + 1)
root = getXMLRoot('test.xml')
incrCount(root)
print root.attrib['count']
, wenn ich es laufen, der richtige Wert gedruckt wird, aber diese Änderung ist nie am Ende der Ausführung in der Datei sichtbar. Ich habe beide Methoden oben ohne Erfolg versucht. Kann jemand darauf hinweisen, wo ich den Fehler gemacht habe?
Die Änderungen werden nur im Speicher gemacht. Wenn Sie möchten, dass sie in eine Datei gehen, müssen Sie sie selbst schreiben. Verwenden Sie [tostring] (https://docs.python.org/3.5/library/xml.etree.elementtree.html#xml.etree.ElementTree.tostring) und schreiben Sie das Ergebnis in eine Datei, die mit dem Modus "wb" geöffnet wurde . – bbayles
@bbayles Ich dachte, ich könnte die Datei direkt ändern. Aber ich hatte gehofft, etwas im ET-Modul zu finden. Naja. Wann ist die Methode immer sinnvoll? – mjr
Die Datei wird von der Festplatte als Textfluss gelesen und dann in Knoten im Speicher geparst. Wenn es (explizit) gespeichert wird, geschieht das Umgekehrte. Berücksichtigen Sie den Overhead, wenn Sie den Rest des Texts mischen, um ein Attribut in einer großen Datei hinzuzufügen oder zu ändern. – Mike