0

簡単な質問ですが、「builtins.IndexError: list index out of range」というエラーが表示された場合の正しい解決策は何ですか?

これは私が進行中の別のスレッドを参照していますが、それを脱線させたくありません。

コード:

from xml.dom import minidom

net_xml = minidom.parse("network_objects.xml")

NetworkObjectsTag = net_xml.getElementsByTagName("network_objects")[0]

# Pull individual network objects
NetworkObjectTag = NetworkObjectsTag.getElementsByTagName("network_object")

for network_object in NetworkObjectTag:
    name = network_object.getElementsByTagName("Name")[0].firstChild.data
    class_name = network_object.getElementsByTagName("Class_Name")[0].firstChild.data
    color = network_object.getElementsByTagName("color")[0].firstChild.data
    ipElement = network_object.getElementsByTagName("ipaddr")
    ipaddr = ipElement.firstChild.data
    maskElement = network_object.getElementsByTagName("netmask")
    netmask = maskElement.firstChild.data
    #address_ranges
    ipaddr_first = network_object.getElementsByTagName("ipaddr_first")
    ipaddr_last = network_object.getElementsByTagName("ipaddr_last")
    print(name,class_name,ipaddr,netmask,ipaddr_first,ipaddr_last,color)

6 行を印刷した後に生成されるエラーは次のとおりです。

ipElement = network_object.getElementsByTagName("ipaddr")[0]
IndexError: list index out of range
4

2 に答える 2

1

フザさん、freenode/#python の cwillu_at_work のおかげでうまくいきました。役立つ提案は次のことにつながります。

    ipElement = network_object.getElementsByTagName("ipaddr")
if ipElement:    
    ipElement = network_object.getElementsByTagName("ipaddr")[0]
    ipaddr = ipElement.firstChild.data
maskElement = network_object.getElementsByTagName("netmask")
if maskElement:
    maskElement = network_object.getElementsByTagName("netmask")[0]
    netmask = maskElement.firstChild.data
于 2013-03-21T19:42:31.477 に答える
1

これは、参照リストが空であることを意味します。つまり、ネットワーク オブジェクトには ipaddr タグがありません。

安全のために、の結果をgetElementsByTagName変数に保存し、長さを確認してから保存する必要ipelement がありipaddrます。

于 2013-03-21T17:56:25.877 に答える