chkbkpstats = csv.reader(file('c://temp//networkerservers.csv'))
srvrs = []
for for row in chkbkpstats:
srvrs.append({'Name' : row[0], 'Instance' : row[1]})
for srvr in srvrs:
try:
c = wmi.WMI(srvr['Instance'])
except:
print 'Error connecting to %s to check OS version' % srvr['Name']
else:
osVer = c.Win32_OperatingSystem()[0].Caption
if '2003' in osVer:
print 'w2k3'
elif '2008' in osVer:
print 'w2k8'
我想你在字典里存储了一个字符串。所以for serverChk in srvrDict['Server']行翻译成for serverChk in yourSavedString。这就是为什么你得到了个人角色。要访问单个字典项,您应该执行for k,v in srvrDict.iteritems(),其中k是键,v是值。在
您正在重写
srvrDict
中的srvrDict
中的srvrDict
值,而不是实际生成一个数据序列,其中包含日志文件中每个项的条目。您需要将其列为包含字典的列表,并将其附加到每个迭代中。你可能在寻找更像这样的东西:我想你在字典里存储了一个字符串。所以
for serverChk in srvrDict['Server']
行翻译成for serverChk in yourSavedString
。这就是为什么你得到了个人角色。要访问单个字典项,您应该执行for k,v in srvrDict.iteritems()
,其中k
是键,v
是值。在你的代码有一些问题。在
首先,每次执行第一个
for
循环时,创建一个新的srvrDict
,覆盖上次存储在此变量中的值。我想,你真正想做的是:现在,
srvrDict
将为chkbkpstats
中的每一行包含一个类似{'P1RT04': ['THP06ASU']}
的条目,将服务器名称映射到该服务器上运行的实例列表。在然后,在第二个循环中,使用
for serverChk in srvrDict:
遍历字典中的所有条目。但是,我不确定c = wmi.WMI(server)
中的变量server
来自何处。如果这是第一个循环中的row[1]
,那么应该使用srcvDict[serverChk]
从字典中检索值。在这样,整个过程将如下所示:
^{pr2}$注:我不确定
c.Win32_OperatingSystem()
的返回值是什么。[…]更新:感谢sr2222指出这一点。代码已修复。在更新:编辑代码以允许一个服务器托管多个实例。在
相关问题 更多 >
编程相关推荐