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

Python实现:将多目录下文件内容合并至统一列表

解决目录遍历与文件行提取的问题

嘿,我发现你现有代码里藏着一个很容易踩的坑——用os.system("cd " + folder)切换目录其实不会改变Python主进程的工作路径,它只是在临时启动的子shell里切换了目录,子shell结束后就失效了,这会导致你后面打开myOutputFile时,实际访问的还是原来的目录,根本找不到目标文件。

咱们直接重构代码,避开这个问题,同时实现你要的功能:

import os

# 先定义你的目录总数,替换成实际数值
nfolders = 10
# 初始化存储结果的列表
extracted_lines = []

for i in range(nfolders):
    # 生成两位数字格式的目录名,比如00、01...
    folder_name = "%02d" % i
    # 用os.path.join构建完整的文件路径,跨平台还不会出错
    target_file = os.path.join(folder_name, "myOutputFile")
    
    # 用with语句打开文件,自动帮你关闭,避免资源泄漏
    with open(target_file, "r") as f:
        all_lines = f.readlines()
        # 提取第一行并转成float,追加到列表
        first_line = float(all_lines[0].strip())
        extracted_lines.append(first_line)
        
        # 提取接下来的5行,这里默认保留字符串格式,需要转类型可以自己调整
        # 注意要判断文件行数是否足够,避免索引越界(可选但推荐)
        if len(all_lines) >= 6:
            next_five = [line.strip() for line in all_lines[1:6]]
            extracted_lines.extend(next_five)
        else:
            # 如果文件行数不够,可以加个提示或者跳过
            print(f"警告:目录{folder_name}下的文件行数不足6行")

# 现在extracted_lines就是按目录0到n顺序整理好的所有行啦
print(extracted_lines)

几个关键细节说明:

  • 路径构建:用os.path.join代替手动拼接路径,不仅跨Windows/Linux/macOS都能用,还能避免因为漏写斜杠导致的路径错误
  • 文件安全处理:with语句会在代码块结束后自动关闭文件,比手动调用f.close()更可靠,就算中途报错也不会漏掉关闭操作
  • 索引越界防护:加了一个简单的判断,如果文件行数不够6行,会给出提示,避免程序直接崩溃
  • 列表操作:用extend把接下来5行逐个加入列表,如果你想把这5行作为一个子列表整体加入,换成append(next_five)就行

内容的提问来源于stack exchange,提问作者J. P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:52:54