我是python的新手。此代码段采用长度为25的列表(dev_info_lines)并查找字符串的一部分并将它们分配给dev对象的属性。看起来很简单。但是,即使列表中有25行,for循环也只会迭代一次。为什么呢?
我确定我错过了一些明显的东西,我昨天开始在python中编码。
编辑:修复了我的代码与社区发现的错误,也许这个操作功能对其他人有用。 (如果你想知道,我的返回开发线在for循环中缩进,结束它和函数过早。肯定是一个菜鸟错误!)谢谢大家!
EDIT2:完成此项目后,任何对完整脚本链接感兴趣的人都可以找到它here。它在FreeNAS中发送驱动器温度和SMART测试结果的电子邮件报告。
def SortInfo(device_id):
dev_info_lines = (a command that returns a list of 25 lines about hard drive SMART info)
bEnteredInfoSection = False
i=0
for line in dev_info_lines:
i=i+1
if ( not bEnteredInfoSection ):
TheFirstField = string.split(line," ",2)
if ( "information section" in line.lower() ):
bEnteredInfoSection = True
else:
field = string.split(line,":",1)
if (field[0].lower() == "model family" ):
dev.family = field[1].strip()
elif (field[0].lower() == "device model" ):
dev.model = field[1].strip()
elif (field[0].lower() == "serial number" ):
dev.serial = field[1].strip()
elif (field[0].lower() == "firmware version" ):
dev.firmware_version = field[1].strip()
elif (field[0].lower() == "user capacity" ):
dev.capacity = field[1].strip()
elif (field[0].lower() == "sector sizes" ):
dev.sector_sizes = field[1].strip()
elif (field[0].lower() == "rotation rate" ):
dev.rotation_rate = field[1].strip()
elif (field[0].lower() == "device is" ):
dev.device_is = field[1].strip()
elif (field[0].lower() == "ata version is" ):
dev.ata_version = field[1].strip()
elif (field[0].lower() == "sata version is" ):
dev.sata_version = field[1].strip()
elif (field[0].lower() == "smart support is" ):
temp = string.split(field[1].strip()," ",1)
strTemp = temp[0].strip().lower()
if (strTemp == "available" ):
dev.smart_support_available = True
elif (strTemp == "unavailable" ):
dev.smart_support_available = False
elif (strTemp == "enabled" ):
dev.smart_support_enabled = True
elif (strTemp == "disabled" ):
dev.smart_support_enabled = False
return dev
答案 0 :(得分:1)
Python非常适合使用print语句进行调试,特别是对于文本处理。
你需要:
为什么它没有迭代的答案将立即显现出来,你将为我们提出下一个具体问题:)