我的 python 脚本中的枚举没有按预期工作?

Enumeration in my python Script is not working as intended?

我一直在开发一个足够简单的 python 脚本,目的是从一个 excel sheet 中提取 scrape/copy 数据,然后使用 openpyxl 将其放入另一个中。一切正常,除了我得到我认为是几列的奇怪结果。

基本上对于某些行,我想添加从其他地方提取的数据,例如文件目录等。所以我抓住它并将其存储到变量中的字符串,然后通过枚举将其值传递到多个单元格中.截至目前,这是我的代码:

keyart = str(filedialog.askopenfilename(title="Please select a Keyart file"))
for ws2 in wb2.worksheets:
    if keyart == "":
        break
    else:
        for index, row in enumerate(ws2.rows, start=2):
            ws2.cell(row=index, column=7).value = keyart

vision = str(filedialog.askopenfilename(title="Please select a Video file"))
for ws2 in wb2.worksheets:
    if vision == "":
        break
    else:
        for index, row in enumerate(ws2.rows, start=2):
            ws2.cell(row=index, column=8).value = vision

audio = str(filedialog.askopenfilename(title="Please select a Audio file"))
for ws2 in wb2.worksheets:
    if audio == "":
        break
    else:
        for index, row in enumerate(ws2.rows, start=2):
            ws2.cell(row=index, column=9).value = audio

但是当我预览生成的 Excel sheet 时,它每次都在每列中粘贴了“随机”数量的值,从而产生了这种阶梯效果:

基本上,C 行和 D 行的行数正确,而其他行则没有。我的代码产生这种效果有什么问题,我该如何更正它以便它枚举值并将值传递到正确的行?

据推测,每次修改最后一行时,OpenPyxl 数据模型中可能会添加一行。也许尝试只获取一次行数? (我将您的 for 循环清理为 if,假设您在工作簿中只有一个工作表。如果不是这种情况,您将必须提前获取每个工作表的行数。)

ws = list(wb2.worksheets)[0]  # grab a reference to the first worksheet
n_rows = len(ws.rows)  # count the current number of rows

keyart = str(filedialog.askopenfilename(title="Please select a Keyart file"))
if keyart:
    for index in range(2, n_rows):
        ws.cell(row=index, column=7).value = keyart
# repeat for vision with column = 8    
# repeat for audio with column = 9