我正在尝试搜索excel文档,如果在excel文档中匹配了mp3文件的名称,它会打印出找到该名称实例的行。
这就是我所拥有的:
from mutagen.easyid3 import EasyID3
from openpyxl import load_workbook
import glob
import re
import os
for name in glob.glob('*.mp3'):
audio = EasyID3(name)
wb = load_workbook('xl.xlsx')
sh = wb.get_sheet_by_name('Russian')
for row in sh:
if row.value == name:
print row.number
答案 0 :(得分:2)
首先,您要加载工作簿并查找每个.mp3
文件的工作表。将该代码移到循环之外。
第二个问题是您尝试迭代不可迭代的工作表sh
。
第三个问题是您将row.value
测试为相同的名称,您可能需要sh.cell[0].value
您的代码可能看起来更像:
from mutagen.easyid3 import EasyID3
from openpyxl import load_workbook
import glob
import re
import os
wb = load_workbook('xl.xlsx')
sh = wb.get_sheet_by_name('Russian')
for name in glob.glob('*.mp3'):
audio = EasyID3(name)
for row_index in range(sh.get_highest_row()):
if sh.cell(row=row_index, column=0).value == name:
print(row_index)
正如@Bill Kidd指出的那样,在openpyxl 2.4.2中,您必须将.get_highest_row()
替换为.max_row
(没有大括号!)。