基于Python计算TXT文件中TRODRY与TROWET的均值
用Python批量计算TXT文件中TRODRY和TROWET的均值
处理逻辑
这类文件的目标数据集中在+TROP/SOLUTION标记后的区块里:
- 找到该标记后,跳过以
*SITE ____EPOCH___开头的表头行 - 后续每行的第三列是
TRODRY数值,第四列是TROWET数值 - 收集所有有效数值后计算均值
代码实现
单个文件处理函数
def calculate_trop_mean(file_path): trodry_values = [] trowet_values = [] in_solution_block = False with open(file_path, 'r') as f: for line in f: line = line.strip() # 进入SOLUTION数据区块 if line.startswith('+TROP/SOLUTION'): in_solution_block = True continue # 离开SOLUTION区块(若存在结束标记) if line.startswith('-TROP/SOLUTION'): in_solution_block = False break # 在区块内处理数据行 if in_solution_block: if line.startswith('*SITE ____EPOCH___'): continue parts = line.split() if len(parts) >= 4: try: trodry = float(parts[2]) trowet = float(parts[3]) trodry_values.append(trodry) trowet_values.append(trowet) except ValueError: # 跳过无法转换为数值的异常行 continue # 计算均值(处理空数据情况) trodry_mean = sum(trodry_values) / len(trodry_values) if trodry_values else None trowet_mean = sum(trowet_values) / len(trowet_values) if trowet_values else None return trodry_mean, trowet_mean
批量处理目录下所有TXT文件
import os def batch_process_trop_files(directory): # 遍历目标目录下的所有txt文件 for filename in os.listdir(directory): if filename.endswith('.txt'): file_path = os.path.join(directory, filename) trodry_mean, trowet_mean = calculate_trop_mean(file_path) print(f"文件: {filename}") print(f"TRODRY均值: {trodry_mean:.2f}" if trodry_mean else "无有效TRODRY数据") print(f"TROWET均值: {trowet_mean:.2f}" if trowet_mean else "无有效TROWET数据") print("-" * 30) # 使用示例:替换为你的目标目录路径 batch_process_trop_files('./trop_data_files')
说明
- 代码自动跳过非数据行、表头行,以及无法转换为数值的异常行
- 若文件无有效数据,会返回
None并提示对应信息 - 批量处理时会遍历指定目录下所有
.txt文件,逐个输出计算结果
内容的提问来源于stack exchange,提问作者Mohamed Hatem
相关产品推荐
相关产品推荐

