分配值时,并非在字符串格式化期间转换所有参数

时间:2016-04-15 04:02:35

标签: python api openstack

我有一个通过网络openstack api创建网络的定义:

def CreateNetwork(self, course_id, network_name, subnets):
    data = {'network' : {'name' : utils.NET_NAME % (course_id, network_name), 
                             'admin_state_up' : True}}
   netw = self.neutron.create_network(body = data)
   net_dict = netw['network']
   network_id = net_dict['id']

        #Create subnets
   subnet_data = {'subnets' : []}
   subnet_data['subnets'].append({'cidr' : subnets,
                                   'ip_version' : 4,
                                   'network_id' : network_id})
   self.neutron.create_subnet(body = subnet_data)                     
   return network_id

我指定了值:

network = net.CreateNetwork(course_id = course.id, network_name = name, subnets = subnet)

然后我收到错误:

 "network = net.CreateNetwork(course_id = course.id, network_name = name, subnets = subnet)
 File "/web/lab/*****b/cnetworks.py", line 114, in CreateNetwork
 data = {'network' : {'name' : utils.NET_NAME % (course_id, network_name),
TypeError: not all arguments converted during string formatting"

请教我如何解决这个问题。 TKS

1 个答案:

答案 0 :(得分:0)

你有%s需要一个字符串。但是,course.id看起来是一个整数,在这种情况下你需要%d。当然,假设PREFIX_NETWORKNAME包含另一个%s来格式化网络名称。所以你的字符串格式为..%d...%s。如果course.id是整数。如果它不是int而是字符串,则需要..%s...%s..否则,您无法将这两个值格式化为此字符串。