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

Python计算多文件夹文件数值平均值问题:var=5.0/10.0无结果

问题描述

我用Python计算每个var对应文件中数值的平均值,当var_values=1.0时程序运行正常,但var_values=5.0、10.0时无法得到结果。对应文件夹下的文件都包含非零数值,希望能获取这两个var对应的数值平均值。

当前代码

import os
import csv

NFILES = 501
Folder_name = '4_1012_nodes_var_1_K_1e3_Cb_1e-3_D_1e-10'

K = 1e3
Cb = 1e-3
DiffCoeff = 1e-10
mean_radii = 50.0
var_values = [1.0, 5.0, 10.0]
Distribution = 'ND'

for var in var_values:
    numeric_values = []  # Reset the list for each var iteration
    file_count = 0  # Counter for the number of files processed

    for i in range(1, NFILES):
        folder_path = rf"D:\Users\debanikb\OneDrive - Technion\Research_Technion\Python_PNM\Surfactant A-D\{Folder_name}\{i}\Time_{mean_radii}_{var}{Distribution}_{K}_{Cb}_{DiffCoeff}.csv"

        if os.path.isfile(folder_path):
            with open(folder_path, 'r') as file:
                reader = csv.reader(file)
                row_values = []
                for row in reader:
                    for value in row:
                        try:
                            numeric_value = float(value)
                            row_values.append(numeric_value)
                        except ValueError:
                            pass
                if row_values:
                    numeric_values.extend(row_values)
                file_count += 1

    if file_count > 0:
        average = sum(numeric_values) / len(numeric_values)
        print(f"Average of numeric values for var={var}:", average)
        print(f"Number of files averaged for var={var}:", file_count)
    else:
        print(f"No numeric values found for var={var}.")

文件数据格式

文件数据格式

当前输出

Average of numeric values for var=1.0: 1.4373770078023274
Number of files averaged for var=1.0: 34
No numeric values found for var=5.0.
No numeric values found for var=10.0.

问题原因与解决方法

核心问题:路径匹配错误

程序找不到var=5.0、10.0对应文件的原因,大概率是路径拼接不符合实际文件的命名规则:

  1. 当前Folder_name固定为4_1012_nodes_var_1_...,只对应var=1的文件目录,其他var的文件应该在类似var_5、var_10的文件夹下。
  2. 生成文件名时,var以5.0、10.0的格式拼接,但实际文件名可能使用整数形式(如5、10)。

针对性解决方案

方案1:动态生成对应var的文件夹路径

把Folder_name的定义移到var循环内,根据当前var值动态生成对应文件夹:

for var in var_values:
    # 动态生成对应var的文件夹名,这里假设文件夹里是整数格式的var值
    Folder_name = f'4_1012_nodes_var_{int(var)}_K_1e3_Cb_1e-3_D_1e-10'
    numeric_values = []
    file_count = 0
    
    # 后续循环代码保持不变
    for i in range(1, NFILES):
        folder_path = rf"D:\Users\debanikb\OneDrive - Technion\Research_Technion\Python_PNM\Surfactant A-D\{Folder_name}\{i}\Time_{mean_radii}_{int(var)}{Distribution}_{K}_{Cb}_{DiffCoeff}.csv"
        # ... 其余代码不变

方案2:修正文件名中的var格式

如果文件夹路径正确,但文件名里的var是整数格式(如5而非5.0),直接在路径拼接时把var转为整数:

# 替换原路径生成行
folder_path = rf"D:\Users\debanikb\OneDrive - Technion\Research_Technion\Python_PNM\Surfactant A-D\{Folder_name}\{i}\Time_{mean_radii}_{int(var)}{Distribution}_{K}_{Cb}_{DiffCoeff}.csv"

调试小技巧

在路径判断前添加打印语句,确认生成的路径是否和实际文件路径一致:

print(f"正在检查路径:{folder_path}")
if os.path.isfile(folder_path):
    # ... 读取文件代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 06:01:25