Python:找出for循环中的哪个元素导致了问题

Python:找出for循环中的哪个元素导致了问题,python,pandas,for-loop,Python,Pandas,For Loop,我使用以下循环迭代一组Excel文件。有超过100个文件。结果是我的一个文件丢失了工作表'3'。按预期,循环在给定点/文件处失败/ 我如何找出我的100个文件中的哪一个是导致循环失败的文件?(一个附带问题是:Python按字母顺序运行循环是什么顺序?) 谢谢 directory = os.listdir('C:\\User\\files') df=pd.DataFrame() for file in directory: if os.path.isfile(file):

我使用以下循环迭代一组Excel文件。有超过100个文件。结果是我的一个文件丢失了工作表'3'。按预期,循环在给定点/文件处失败/

我如何找出我的100个文件中的哪一个是导致循环失败的文件?(一个附带问题是:Python按字母顺序运行循环是什么顺序?)

谢谢

directory = os.listdir('C:\\User\\files')

df=pd.DataFrame()    

for file in directory:
    if os.path.isfile(file):

        file_name = file[0:3]
        workbook = load_workbook(filename = file, data_only=True)
        sheet = workbook['3. Prices']
        e13 = sheet['E13'].value
        f13 = sheet['F13'].value
        g13 = sheet['G13'].value
        h13 = sheet['H13'].value
        f19 = sheet['F19'].value
        i19 = sheet['I19'].value
        k19 = sheet['K19'].value

        df = df.append(pd.DataFrame({
                "File_name":file_name, 
                "E13":e13, "F13":f13, "G13":g13,"H13":h13,
                "F19":f19,"I19":i19,"K19":i19,
                }, index=[0]))

在打印文件名时,在代码周围添加try/catch:

df=pd.DataFrame()    
file_name = ""
try:
    for file in directory:
        if os.path.isfile(file):

            file_name = file[0:3]
            workbook = load_workbook(filename = file, data_only=True)
            sheet = workbook['3. Prices']
            e13 = sheet['E13'].value
            f13 = sheet['F13'].value
            g13 = sheet['G13'].value
            h13 = sheet['H13'].value
            f19 = sheet['F19'].value
            i19 = sheet['I19'].value
            k19 = sheet['K19'].value

            df = df.append(pd.DataFrame({
                    "File_name":file_name, 
                    "E13":e13, "F13":f13, "G13":g13,"H13":h13,
                    "F19":f19,"I19":i19,"K19":i19,
                    }, index=[0]))
except Exception as e:
    print("Exception happend in " + file_name + ". Exception: " + e)

你可以。失败到底是什么?这是一个例外吗?打印({}.format(file_name))?我不确定您从哪里获得文件列表(您不显示
目录
的来源),但如果它类似于
os.listdir()
,则顺序是随机的。您可以
directory.sort()
来订购。@tdelaney,很抱歉。我现在展示它的来源。最好将try/except放在for循环中,以便记录错误并继续处理。捕获一般的
异常也有风险(这就是为什么我要求OP提供真实的异常,所以在信息可用时进行更改是很好的)。