这是我正在处理的日志解析器的一段代码片段。日志解析器用于刀片服务器机箱,并包含多个刀片服务器。
我在blade_populate()中的for循环中收到以下错误:
"期望的类型积分没有"
通过此对象列表进行迭代的正确方法是什么,以便我以后可以让Python开始填充固件,例如iDRAC?
def blade_create():
blades= []
for servers in range(blade_count()):
blades.append(servers)
return blades
blades = blade_create()
# Parse log to obtain FW revisions for blades
def blade_populate():
for blade in range(blades):
drac = log.readline()
答案 0 :(得分:0)
看起来你有一个indnetation错误。函数中的return
语句位于循环内。这意味着它在循环运行第一次迭代时被击中,或者如果循环根本没有运行(因为范围是空的),它根本不是return
(在Python中相当于做return None
)。
要解决此问题,请将return
语句取消一级:
def blade_create():
blades= []
for servers in range(blade_count()):
blades.append(servers)
return blades # unindent here!
blades = blade_create()
# Parse log to obtain FW revisions for blades
def blade_populate():
for blade in blades: # this line shouldn't use range if blades is a list
drac = log.readline()
但是我注意到你的blade_create()
函数等同于range(blade_count())
(如果需要稍后修改结果,可能会list(...)
包围它)。可能你根本不需要单独的功能。