首页 > 解决方案 > 如果然后循环退出而不填充列表

问题描述

我正在尝试使用 os.walk 遍历一系列文件夹,找到给定文件夹中最早的 excel 文件,并将其复制到临时文件夹。此循环在创建匹配列表之前一直退出。我收到错误

NameError: name 'xlsxExt' is not defined

如何让循环遍历 expFolder 中的每个文件,为每个 expFolder 创建一个“匹配”列表,然后对其进行排序?任何帮助将不胜感激!

path = r'C:\Users...'
tempFolder = os.mkdir(os.path.join(path, 'tempFolder'))
for dataFolder, expFolder, file in os.walk(path):
    print("Starting", dataFolder)
    matches = []
    for file_name in file:
        if file_name.endswith('.xlsx'):
            xlsxExt = os.path.join(dataFolder, file_name)
    matches.append(xlsxExt) #breaks here
    sortedMatches = sorted(matches, key=os.path.getmtime)
    first = sortedMatches[0][0:]
    print(first)

标签: python

解决方案


您正在初始化 for-1-for-2-if 块内的变量 xlsxExt。您收到此错误是因为代码无法初始化变量并且您将其附加到列表中。这意味着您的 for-2 或 if 由于条件不满足而没有被执行。始终在条件语句之外初始化此类变量。


推荐阅读