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

Python中跳过不含指定文件的文件夹并计算行均值

遍历文件夹时跳过无指定文件的处理方案

我有一批文件夹,部分包含len_J.py文件,原代码用于遍历这些文件夹并计算每行的均值,但遇到不含该文件的文件夹时会运行失败。需要修改代码,仅计算存在len_J.py的文件夹的均值,跳过不含该文件的文件夹。

原代码

NFILES = 3

values = [[] for _ in range(NFILES)]

for i in range(NFILES):
    with open(rf"C:\Users\USER\OneDrive - Technion\Research_Technion\Python_PNM\Surfactant A-D\Trials\{i+1}\len_J.py") as data: 
        values[i] += map(int,filter(lambda x: x.strip().isdecimal(), data))
        
for t in zip(*values):
    print(sum(t)//len(t))

修改后的代码

import os

NFILES = 3
valid_values = []

for i in range(NFILES):
    file_path = rf"C:\Users\USER\OneDrive - Technion\Research_Technion\Python_PNM\Surfactant A-D\Trials\{i+1}\len_J.py"
    # 检查文件是否存在
    if os.path.exists(file_path):
        with open(file_path) as data:
            # 提取文件中的有效数字并转为整数列表
            num_list = list(map(int, filter(lambda x: x.strip().isdecimal(), data)))
            # 仅添加非空的数字列表
            if num_list:
                valid_values.append(num_list)

# 处理有效数据的均值计算
if valid_values:
    # 验证所有文件的行数是否一致
    row_counts = {len(lst) for lst in valid_values}
    if len(row_counts) == 1:
        for row in zip(*valid_values):
            print(sum(row) // len(row))
    else:
        print("警告:不同文件的数据行数不一致,无法计算每行均值")
else:
    print("未找到任何包含有效数据的len_J.py文件")

关键修改说明

  • 引入os.path.exists()检查文件是否存在,直接跳过不存在文件的文件夹
  • 改用valid_values动态存储有效数据列表,避免原固定长度列表中空数据的干扰
  • 添加空数据过滤,确保只有包含数字的列表才会被纳入计算
  • 增加数据一致性校验,防止因不同文件行数不同导致的计算错误
  • 补充无有效文件的提示,让程序行为更清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:37:18