Python筛选文件夹中2021年.txt文件仅返回1条结果,如何排查错误?
问题分析
你代码中的逻辑疏漏有以下几点:
- 核心问题是计数变量
i的初始化位置错误:你把i = 1写在了for循环内部,每次遍历新文件时都会把i重置为1,所以判断条件永远是匹配01.2021,只有1月的2021年txt文件能被筛选到。就算你在符合条件后给i加1,下一轮循环又会被重置回1,没有累加效果。 - 筛选逻辑设计不合理:你不需要通过计数变量匹配月份,只要判断日期段是否以
.2021结尾、后缀为txt即可,现有逻辑如果出现缺月(比如没有2月的文件),后续所有月份的文件都会匹配失败。 - 变量命名不规范:你用了Python内置关键字
list作为存储列表的变量名,会覆盖内置的列表类型,后续如果需要调用list()方法会报错。
修正后可运行代码
import os os.chdir(r"C:\Users\MyName\Desktop\Python-Files\Test_OS") target_files = [] for file in os.listdir("."): # 提前过滤非txt后缀的文件 if not file.endswith(".txt"): continue # 加异常捕获避免不符合命名规则的文件导致程序报错 try: date, _ = file.split("-") except ValueError: continue # 判断是否为2021年的文件 if date.endswith(".2021"): target_files.append(file) print(target_files)
内容的提问来源于stack exchange,提问作者user16764349
相关产品推荐
相关产品推荐

