代码分析模块异常:读取文件行计数正常但数据处理失效求助
问题原因及修复方案
核心问题:文件指针已到末尾
你第一个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
相关产品推荐
相关产品推荐

