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

自动排序txt转csv积分值的Python脚本运行异常问题求助

错误原因及修复方案

你的脚本无法排序的核心问题是索引取值错误,另外还有多处逻辑可优化:

  • 索引越界:你提供的示例行用|拆分后仅包含2个元素,索引从0开始计数时,积分类内容存在索引为1的位置,原脚本直接访问minNum[4]会直接触发异常,所有行都会被归入未排序的endlines列表,自然没有排序效果
  • 冗余类型转换:你已经在try代码块中将积分转为int类型,排序时不需要再做一次类型转换
  • 资源未正确释放:读取txt文件时没有使用上下文管理器,文件句柄不会自动关闭,可能导致后续操作异常
  • 写入模式不合理:使用a+追加模式会导致多次运行脚本时,同一个输出文件的内容不断重复追加,建议用w覆盖模式
  • 路径兼容性差:硬编码 Windows 风格的路径分隔符\\无法在Linux/Mac系统运行,建议用os模块处理路径

修复后可直接运行的代码

import csv
import glob
import os

# 自动创建输出文件夹,不存在就新建,存在也不会报错
os.makedirs("sorted", exist_ok=True)
allTxtFiles = glob.glob("txt/*.txt")

for t in allTxtFiles:
    # 用上下文管理器读文件,自动释放资源
    with open(t, 'r', encoding='utf-8') as f:
        input_lines = f.readlines()
    
    unsorted_lines = []
    sortable_lines = []
    for line in input_lines:
        line = line.strip()
        # 跳过空行
        if not line:
            continue
        # 按|最多拆分1次,避免内容本身包含|导致拆分错误
        parts = line.split("|", 1)
        if len(parts) != 2:
            unsorted_lines.append(parts)
            continue
        try:
            # 提取并转换积分
            points_str = parts[1].replace("PointsTotal = ", "").strip()
            points = int(points_str)
            # 存储格式为(排序用积分, 用户信息字段, 积分字段)
            sortable_lines.append((points, parts[0].strip(), points))
        except:
            unsorted_lines.append(parts)
    
    # 按积分从高到低排序
    sortable_lines.sort(key=lambda x: x[0], reverse=True)
    # 提取要写入csv的内容,去掉排序用的冗余字段
    result_lines = [[item[1], item[2]] for item in sortable_lines]
    # 把不符合格式的行放在末尾
    result_lines.extend(unsorted_lines)

    # 生成输出文件路径,兼容多系统
    output_name = os.path.join("sorted", os.path.basename(t).replace(".txt", ".csv"))
    with open(output_name, 'w', newline="", encoding='utf-8') as outfile:
        writer = csv.writer(outfile)
        # 可选写入表头,不需要可以注释掉
        writer.writerow(["用户信息", "总积分"])
        writer.writerows(result_lines)

效果说明

运行后会自动读取txt文件夹下所有的txt文件,按积分降序排序后输出到sorted文件夹下对应名称的csv文件,不符合格式的行会统一放在文件末尾,不会丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:24:01