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

代码分析模块异常:读取文件行计数正常但数据处理失效求助

问题原因及修复方案

核心问题:文件指针已到末尾

你第一个for Rivi in Tiedosto循环已经遍历完文件所有行,此时文件读取指针停在文件末尾,后续调用Tiedosto.readline()只会返回空字符串,导致while循环完全不执行。

修复代码

把统计行数和数据处理合并到一个循环里,同时修复输入逻辑(支持按回车保留默认文件名),补充必要的异常防护:

def lueTiedosto(rows, Nimet):
    # 处理输入:空输入用默认文件名
    default_file = "L08T5D1.txt"
    Lue = input(f"Anna luettavan tiedoston nimi, nykyinen on '{default_file}'.\n")
    if not Lue.strip():
        Lue = default_file
    print(f"Käytetään tiedostoa: {Lue}")

    # 定义文件分隔符,根据你的实际文件格式修改(比如逗号、制表符)
    EROTIN = ","
    count = 0

    # 用with语句自动管理文件,避免手动关闭遗漏
    with open(Lue, 'r', encoding="UTF-8") as Tiedosto:
        for Rivi in Tiedosto:
            # 清理行首尾空白并跳过空行
            Rivi_clean = Rivi.strip()
            if not Rivi_clean:
                continue
            count += 1
            # 拆分数据并处理
            Columns = Rivi_clean.split(EROTIN)
            # 确保列数足够,避免索引错误
            if len(Columns) >= 3:
                Item = VARASTO()
                Item.Tuote = Columns[0].strip()
                Item.Maara = int(Columns[1].strip())
                Item.Hinta = Columns[2].strip()
                rows.append(Item)
    
    print(f"Tiedosto {Lue} luettu, {count} riviä.")
    print(f"Käsitelty yhteensä {len(rows)} tuotetta.")
    return (rows, Nimet)

额外注意事项

  • 确认VARASTO类已正确定义,包含Tuote、Maara、Hinta属性
  • 根据你实际的文件分隔符修改EROTIN的值(比如空格 、制表符\t)
  • 新增的列数检查,能避免因文件格式错误导致的程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:25:21