如何修改Python代码实现Fault_*.txt文件按数字升序处理?
解决Fault_*.txt文件按数字升序遍历的问题
错误原因分析
之前误将文件夹路径currentPath传入sorted()函数,这会把路径字符串拆分为单个字符排序,完全不符合文件遍历需求,同时会引发报错。此外,os.listdir()默认返回的文件名是字典序,会出现Fault_100.txt之后直接到Fault_1000.txt的异常,而非数字升序。
正确代码修改方案
步骤1:筛选目标文件
先从目录中过滤出符合Fault_*.txt命名规则的文件:
import os currentPath = "../Assessment_Scenarios/Simulations1400/" # 筛选出所有Fault_开头、.txt结尾的文件 fault_files = [f for f in os.listdir(currentPath) if f.startswith("Fault_") and f.endswith(".txt")]
步骤2:按文件名中的数字升序排序
通过提取文件名中的数字作为排序依据,替代默认的字典序:
# 方法1:通过字符串拆分提取数字 sorted_files = sorted(fault_files, key=lambda x: int(x.split("_")[1].split(".")[0])) # 方法2:用正则提取数字(更鲁棒,适配复杂命名) import re sorted_files = sorted(fault_files, key=lambda x: int(re.search(r'Fault_(\d+)\.txt', x).group(1)))
步骤3:遍历处理排序后的文件
for file_name in sorted_files: full_path = os.path.join(currentPath, file_name) # 此处添加你的文件处理逻辑,例如读取文件内容 with open(full_path, 'r', encoding='utf-8') as f: content = f.read() # 执行后续处理...
关键说明
- 排序逻辑的核心是将文件名中的数字转为整数,让排序基于数值大小而非字符顺序。
- 正则方法比字符串拆分更可靠,能避免文件名格式微小变化导致的拆分错误。
内容的提问来源于stack exchange,提问作者JMFcode
相关产品推荐
相关产品推荐

