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

CSV文件逐行打印带行号异常:行号起始错误及逻辑排查

问题原因分析

你的代码核心问题是每次循环调用了两次file.readline():

  • 第一次在if判断里,读取的行内容直接被丢弃,没有任何处理;
  • 第二次在print里,才是实际打印的行。
    同时计数器ct每次循环都强制加1,不管是否读到有效行。这就导致:
  1. 你只打印了文件中偶数行的内容,奇数行全被漏掉;
  2. 计数器会随着循环次数不断累积,当文件快读完时,前面已经循环了几百次,所以首次输出的行号直接跳到了479。
修复方案

方案1:修正原有while循环逻辑

把读取行的操作统一放在循环开头,存到变量里,再判断是否为空,同时让计数器只在读到有效行时递增:

with open('Polly re-records.csv', 'r', encoding='ISO-8859-1') as file:
    ct = 1
    while True:
        line = file.readline()
        # 读到空行(文件末尾)就终止循环
        if not line:
            break
        # strip()用来去除行尾的换行符,避免输出额外空行
        print(line.strip(), ct)
        ct += 1

方案2:用Python内置的enumerate更简洁

enumerate可以直接帮你生成行号和对应行内容,无需手动维护计数器,是处理这类场景的最佳实践:

with open('Polly re-records.csv', 'r', encoding='ISO-8859-1') as file:
    # start=1 指定行号从1开始,默认是0
    for ct, line in enumerate(file, start=1):
        print(line.strip(), ct)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:40:17