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

Python:如何筛选符合条件的.txt文件并计算平均值

问题解决:筛选符合条件的文件并计算平均值

你的需求是先筛选出满足「文件内数值最小值≤最大值的一半」的.txt文件,再对这些符合条件的文件计算平均值。原代码的问题在于没有过滤掉不满足条件的文件,直接用了所有非空文件的数据。以下是修改后的代码:

import os

NFILES = 3
# 只存储符合条件的文件的数值列表
qualified_values = []

for i in range(NFILES):
    filepath = rf"C:\Users\USER\OneDrive - Technion\Research_Technion\Python_PNM\Surfactant A-D\Trials\{i+1}\Test.txt"
    if os.path.isfile(filepath):
        with open(filepath) as data:
            lines = data.readlines()
            numbers = [int(line.strip()) for line in lines if line.strip().isdigit()]
            # 先判断数值列表非空,避免min/max报错
            if numbers:
                min_val = min(numbers)
                max_val = max(numbers)
                # 检查是否满足条件
                if min_val <= 0.5 * max_val:
                    qualified_values.append(numbers)
                    print(f"文件{i+1}符合条件,数值:{numbers}")

# 只有当有符合条件的文件时才计算平均值
if qualified_values:
    # 清空目标文件再写入(避免多次运行追加重复内容)
    with open(rf"C:\Users\USER\OneDrive - Technion\Research_Technion\Python_PNM\Surfactant A-D\Trials\Averaged.txt", 'w') as f:
        # 按位置对应取每个文件的数值计算平均
        for t in zip(*qualified_values):
            avg = sum(t) // len(t)
            f.write(f"{avg}\n")
else:
    print("没有符合条件的文件")

关键修改点:

  • 新增qualified_values列表,专门存放符合条件的文件数值,替代原代码的values和valid_values
  • 读取每个文件的数值后,先判断列表非空,再计算min和max,检查是否满足条件,满足才加入qualified_values
  • 写入结果时改用w模式清空文件(原代码用a会每次运行追加,容易重复),如果没有符合条件的文件则提示
  • 移除了原代码中无效的values[i].extend(numbers),因为不需要存储所有文件的数据,只留符合条件的

内容的提问来源于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 13:42:26