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

如何修改Python代码以遍历目录中所有指定TXT文件执行操作?

问题分析

你的代码存在两个核心问题:

  1. 变量不匹配:循环中通过enumerate得到的i是从42开始的序号,但你却用f'{i}.txt'指定要处理的文件,完全忽略了glob遍历到的file变量。这会导致你处理的文件和实际遍历到的文件脱节,甚至因文件不存在抛出异常终止循环。
  2. 文件顺序不可控:glob.glob("*.txt")返回的文件列表顺序依赖系统,不一定是按40、41、42...的数字顺序排列,可能导致处理顺序混乱。
修改方案

方案1:处理所有TXT文件(不严格要求顺序)

直接使用遍历到的file变量获取文件名,同时从文件名中提取数字作为结果文件的编号:

import glob

# 遍历所有txt文件
for file in glob.glob("*.txt"):
    # 从文件名中提取数字部分(比如从"40.txt"得到"40")
    file_num = file.split('.')[0]
    # 加载当前文件
    pipeline.load('txt', file)
    # 执行自定义函数
    pipeline.myfunction('myfunction', '1.png', file)
    # 保存结果,编号与原文件对应
    pipeline.write(f'result{file_num}.csv')

方案2:按40到100的数字顺序处理文件

如果需要严格按数字顺序处理,先对文件列表按文件名的数字排序:

import glob

# 获取所有txt文件,按文件名的数字部分排序
txt_files = sorted(glob.glob("*.txt"), key=lambda x: int(x.split('.')[0]))

for file in txt_files:
    file_num = file.split('.')[0]
    pipeline.load('txt', file)
    pipeline.myfunction('myfunction', '1.png', file)
    pipeline.write(f'result{file_num}.csv')

方案3:保留原代码的i序号(仅当需要连续编号时)

如果你的result{i}.csv需要从42开始连续编号,而非对应原文件数字,那么要确保遍历所有文件,同时使用file变量加载文件:

import glob

# 遍历所有txt文件,i从42开始计数
for i, file in enumerate(glob.glob("*.txt"), 42):
    pipeline.load('txt', file)
    pipeline.myfunction('myfunction', '1.png', file)
    pipeline.write(f'result{i}.csv')
关键说明
  • 核心错误是你没有使用循环中实际遍历到的file变量,而是错误地用i构造文件名,这会导致处理的文件与遍历到的文件不匹配,甚至触发异常终止循环。
  • 如果原代码中仅处理了40.txt就停止,大概率是第一次循环中f'{i}.txt'(即42.txt)不存在或加载失败,导致程序抛出异常退出。

内容的提问来源于stack exchange,提问作者LTE

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 02:24:28