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
相关产品推荐
相关产品推荐

