You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 08:05:08