如何用Python从多个同长度数值列文件提取对应位置最大值生成新文件
多文件单列数值按位置取最大值Python实现
实现思路
- 遍历当前目录下所有符合条件的源文件
- 逐行读取每个文件的数值,转换为数值类型存储为二维列表
- 对二维列表按列(即不同文件的相同位置)配对,计算每列的最大值
- 将所有最大值按单列格式写入新文件
完整代码
import glob import os def calc_positional_max(output_file="max_result.txt", file_pattern="*.txt"): # 筛选当前目录下符合规则的源文件,排除输出文件本身 file_paths = [f for f in glob.glob(file_pattern) if os.path.isfile(f) and f != output_file] if not file_paths: print("未找到符合条件的源文件") return all_values = [] # 读取每个文件的单列数值 for fp in file_paths: with open(fp, 'r', encoding='utf-8') as f: # 跳过空行,转换为浮点型存储,整数场景可改为int cur_values = [float(line.strip()) for line in f if line.strip()] all_values.append(cur_values) # 校验所有文件长度一致 standard_len = len(all_values[0]) for idx, vals in enumerate(all_values): if len(vals) != standard_len: raise ValueError(f"文件{file_paths[idx]}长度与其他文件不匹配") # 按位置取最大值 max_values = [max(col) for col in zip(*all_values)] # 写入结果文件 with open(output_file, 'w', encoding='utf-8') as f: for val in max_values: f.write(f"{val}\n") if __name__ == "__main__": # 可自定义输出文件名、源文件匹配规则,比如匹配csv就改file_pattern为"*.csv" calc_positional_max()
使用说明
- 请先将所有存储单列数值的源文件放到代码运行的同级目录
- 若源文件为特定格式,修改
file_pattern参数即可,例如匹配所有csv文件改为"*.csv" - 默认输出结果到
max_result.txt,可修改output_file参数自定义输出文件名 - 若源文件全为整数,可将读取部分的
float改为int,避免输出小数后缀
效果验证
示例输入3个文件的单列内容分别为:
File 1: 1、2、3、4、5(逐行存储)
File 2: 7、3、8、1、5(逐行存储)
File 3: 2、3、6、8、3(逐行存储)
输出文件内容为:7、3、8、8、5(逐行存储),完全符合需求预期。
内容的提问来源于stack exchange,提问作者Deathtime
相关产品推荐
相关产品推荐

