Я редактирую теги с помощью elementtree/lists, а после получения информации из тегов конфигурации я хочу удалить тег. Я пытаюсь сделать это ниже с i.remove(j)
, и если я прокручу список списков, я вижу, что действительно этот тег конфигурации удален. Однако, когда я пишу в файл , они все еще там, почему это, как их удалить? Это то, что я редактирую подсписку, а затем записываю другой список в файл?удалить элемент из elementtree/list
import xml.etree.ElementTree as ET
ET.register_namespace("", "http://clish.sourceforge.net/XMLSchema")
tree = ET.parse('ethernet.xml')
root = tree.getroot()
command= ""
pattern = ""
operation = ""
priority= ""
action_command = """/klas/klish-scripts/ifrange.py run_command --cmdrange "${interface_method} ${iface_num} ${range_separator} ${iface_num2} ${range_separator2} ${interface_method2} ${iface_num3} ${range_separator3} ${iface_num4} ${range_separator4} ${interface_method3} ${iface_num5} ${range_separator5} ${iface_num6} ${range_separator6} ${interface_method4} ${iface_num7} ${range_separator7} ${iface_num8}" --command "%s" --klish_config "%s" --klish_action "%s" --priority "%s"
"""
commands = root.findall('{http://clish.sourceforge.net/XMLSchema}'
'VIEW/{http://clish.sourceforge.net/XMLSchema}COMMAND')
all1 = []
for command in commands:
all1.append(list(command.iter()))
atr = ""
for i in all1:
for j in i:
if "COMMAND" in j.tag:
if "name" in j.attrib:
pattern = j.attrib['name']
#print operation
if "CONFIG" in j.tag:
if "operation" in j.attrib:
operation = j.attrib['operation']
else:
operation = "set"
if "pattern" in j.attrib:
pattern = j.attrib['pattern']
if "priority" in j.attrib:
priority = j.attrib['priority']
else:
if operation == "unset":
priority = ""
else:
priority = "0x7f00"
atr = str(j.attrib)
**i.remove(j)**
if "ACTION" in j.tag:
if j.text:
command = j.text.strip()
j.text= action_command % (command, pattern, operation, priority)
else:
command = ""
cmd = ""
cmd += ifrange
for o in all1:
for y in o:
print y
**cmd += ET.tostring(o[0], encoding="utf-8", method="xml")**
cmd += end_tags
f = open('Z2.xml', 'w')
f.write(cmd)
f.close
РЕДАКТИРОВАТЬ: раствор, в конце файла перед тем, как записать в файл сбросить all1
на []. Затем я пересекаю дерево, удаляя необходимые элементы.
all1 = []
for command in commands:
for i in command:
#print i
if "CONFIG" in str(i):
command.remove(i)
all1.append(list(command.iter()))
Я отредактировал в своем грязном решении, но я подумаю о том, как сделать его лучше с вашим ответом, спасибо. – Paul