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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:54:06