迭代yaml文件

时间:2016-07-12 17:04:00

标签: python yaml

我正在尝试遍历yaml文件。我想提取内容
ipv6:“2031:31:31:31 :: 2032:32:32:32 :: 2033:33:33:33 :: 2034:34:34:34 :: 2035:35:35:35 ::” 以下是我的代码。我收到以下错误:

 for x in self.dhcp_dict['subnets'][sub]['ipv4'].split():
TypeError: string indices must be integers, not str

谁能告诉我哪里出错了?谢谢 杰西 代码:

dict = yaml.load(fd)
        self.server_dict = dict['server_configs']
        self.interface_dict = self.server_dict['interface']
        self.dhcp_dict = self.server_dict['dhcp_config']


def configureDhcpv6(self):
        pdb.set_trace()
        log.info ("Writing the dhcp.conf file")
        infile = open('v6.txt', 'w+')

        self.lease_time = self.dhcp_dict['lease_time']
        infile.write("default-lease-time %s; \n" %(self.lease_time))
        infile.write("preferred-lifetime 604800;\noption dhcp-renewal-time 604800;\noption dhcp-rebinding-time 7200;\noption dhcp6.domain-search cisco.com;\noption dhcp6.preference 255;\noption dhcp6.rapid-commit;\noption dhcp6.info-refresh-time 21600;\ndhcpv6-lease-file-name /var/lib/dhcpd/dhcpd6.leases;\nauthoritative;\nlog-facility local7;\n\n")

        for sub in self.dhcp_dict['subnets']:
            if (sub == 'relay'):
                 for x in self.dhcp_dict['subnets'][sub]['ipv6'].split():
                     range6 = sub + "11" + " " + sub + "254"
                     infile.write("Subnet 6  %s/64 {\n" % (sub))
                     infile.write("        range6 %s;\n}\n\n" % (range6))

        infile.close()

Yaml文件:

dhcp_config:
    lease_time: "300"
    relay_server: "5.5.5.0"
    subnets:
      relay:
        ipv4: "30.30.30.0 31.31.31.0 32.32.32.0 33.33.33.0 34.34.34.0 35.35.35.0"
        ipv6: "2031:31:31:31:: 2032:32:32:32:: 2033:33:33:33:: 2034:34:34:34:: 2035:35:35:35::"
      smart_relay: "31.1.1.0 32.1.1.0 33.1.1.0 34.1.1.0 35.1.1.0"
      snoop: "36.36.36.0 37.37.37.0 38.38.38.0 39.39.39.0 30.30.30.0"

0 个答案:

没有答案