我有一个正在阅读的 excel 文档,它的行数未知,我想将每一行以及 A B 和 C 列的三个值添加到列表中,然后在没有达到时停止。然后我想对列表中的每个项目运行一个操作。
如果有人可以提供帮助,我对 if/for 循环
感到很糟糕。
下面是将参数 3 作为工作簿和工作表加载。我需要从 A61
行开始,将 A61,B61,C61
添加到列表中,然后继续,直到 A whatever is = to none。
好了,我说到这里了,现在我该如何为行中的每个项目运行命令?
if len(sys.argv) > 3:
wb = xlrd.open_workbook(sys.argv[3])
sheet = wb.sheet_by_index(0)
first_kvm_ip = str(sheet.cell_value(34,1))
last_kvm_ip = str(sheet.cell_value(35,1))
kvm_netmask = str(sheet.cell_value(36,1))
rows = sheet.nrows
curr_row = 52
while (curr_row < rows - 1):
curr_row += 1
row1 = int(sheet.cell_value(curr_row,0))
row2 = str(sheet.cell_value(curr_row,1))
vlanls1.append(row1)
vlanls2.append(row2)
我想为第 1 行中的每个项目运行一个命令 VLAN创建(行1,行2)
我假设我需要一个 for i 迭代。我只是需要帮助。
我需要为第 1 行和第 2 行的每次迭代运行此命令
mo = FabricVlan(parent_mo_or_dn="fabric/lan", sharing="none", name=row2, id=row1, mcast_policy_name="", policy_owner="local", default_net="no", pub_nw_name="", compression_type="included")
handle.add_mo(mo)
好吧,我想我终于明白了。感谢大家的帮助。
if len(sys.argv) > 3:
wb = xlrd.open_workbook(sys.argv[3])
sheet = wb.sheet_by_index(0)
first_kvm_ip = str(sheet.cell_value(34,1))
last_kvm_ip = str(sheet.cell_value(35,1))
kvm_netmask = str(sheet.cell_value(36,1))
rows = sheet.nrows
curr_row = 52
while (curr_row < rows - 1):
curr_row += 1
row1 = int(sheet.cell_value(curr_row,0))
row2 = str(sheet.cell_value(curr_row,1))
vlanls1.append(row1)
vlanls2.append(row2)
for x,y in zip(vlanls1,vlanls2):
mo = FabricVlan(parent_mo_or_dn="fabric/lan", sharing="none", name=y, id=x, mcast_policy_name="", policy_owner="local", default_net="no", pub_nw_name="", compression_type="included")
handle.add_mo(mo)
最佳答案
worksheet.rows
返回所有行的列表,无论有多少行。该列表中的每一行本身就是该行中单元格的列表。知道了这一点,就可以很容易地实现一个 for
循环,该循环遍历每一行并将前三个单元格附加到一个新列表中。
这段代码应该可以解决问题。
myList = []
for row in sheet.rows:
myList.append([row[0],row[1],row[2]])
尽管如此,我确实建议您阅读 openpyxl 文档,它会避免您遇到一些麻烦。此外,如果您知道自己在使用 for 循环时遇到问题,请阅读 for 循环的工作方式:)
关于python将项目添加到列表并在获得空值时停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38750174/