在YAML中,列表索引必须是整数或切片,而不是s

2024-04-25 22:23:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一些变量从YAML文件传递到python脚本。 我的YAML文件是一个嵌套字典,其中一个列表作为特定键的值

---
source:
  address:
    - 10.0.0.1
    - 10.0.0.2
    - 172.16.0.1
  mask:
    - 255.255.255.255
    - 255.255.255.255
    - 255.255.255.0

我正在尝试遍历列表并打印列表的每个值

^{pr2}$

但是我得到了以下错误

TypeError: list indices must be integers or slices, not str

谢谢


Tags: 文件脚本yamlsource列表字典address错误
1条回答
网友
1楼 · 发布于 2024-04-25 22:23:35

['source']['address']试图用索引'address'为一个元素列表['source']建立索引,这对Python列表没有任何意义(因此会得到错误)。在

你可能想要这样的东西:

#!/usr/bin/env python3
import yaml, sys

def function(inventory):
    source = inventory['source']
    for address, mask in zip(source['address'], source['mask']):
        if mask == '255.255.255.255':
            print('object-group network H-{}-32'.format(address))

inventory = yaml.load(open(sys.argv[1], 'rb'))
function(inventory)

相关问题 更多 >