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

如何用Python读取文本文件列值并完成指定计算?

解决文本文件列计算问题的Python脚本修正

看起来你的脚本已经有了读取文件和拆分列的基础,但缺少提取文件名中的除数以及计算并拼接结果的关键步骤。我帮你修正了脚本,完全符合你的需求:

修正后的完整脚本

# 指定目标文件路径(单个文件无需用glob,直接路径更高效)
file_path = '/home/drem/data/input.file'

# 使用with语句自动管理文件,避免手动关闭的遗漏
with open(file_path, 'r') as input_file:
    # 逐行读取文件内容
    for line in input_file:
        # 去除行尾换行符并拆分成列
        columns = line.strip().split()
        # 跳过可能存在的空行
        if not columns:
            continue
        
        # 提取第一列文件名中的第二个数字(比如39、29)
        filename = columns[0]
        # 按下划线分割文件名,取第二个元素并转为整数
        divisor = int(filename.split('_')[1])
        
        # 获取第4列和第6列的值(注意Python索引从0开始)
        col4 = int(columns[3])
        col6 = int(columns[5])
        
        # 构造你需要的计算表达式
        calculation = f"({col4}*{col6})/{divisor}"
        # 如果需要直接输出计算结果而非表达式,可以替换成下面这行:
        # calculation = str((col4 * col6) / divisor)
        
        # 拼接原内容和计算结果并打印
        print(f"{' '.join(columns)} {calculation}")

关键改进说明

  1. 简化文件读取:你原脚本用glob处理单个文件是多余的,直接指定文件路径更高效;同时用with open语句自动管理文件关闭,比手动open/close更安全。
  2. 提取除数逻辑:通过split('_')拆分文件名,精准获取下划线分隔的第二个数字(比如2.0_39_RAS.out拆分后得到['2.0', '39', 'RAS.out'],取索引1的元素就是39)。
  3. 完成计算与输出:将第4列、第6列转为整数后构造表达式,再和原行内容拼接输出,完全匹配你想要的格式。

运行效果

执行脚本后,输出会和你要求的完全一致:

2.0_39_RAS.out 1.911157 1.5 80 0 10 (80*10)/39
2.8_29_BAS.out 2.224520 1.5 78 0 60 (78*60)/29
2.0_29_CGD.out 2.198376 1.5 85 0 28 (85*28)/29
2.0_28_MPK.out 1.945320 1.5 78 0 36 (78*36)/28
2.1_30_CLR.out 2.281479 1.5 78 0 16 (78*16)/30

内容的提问来源于stack exchange,提问作者user14447697

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 21:38:12