CSV文件逐行打印带行号异常:行号起始错误及逻辑排查
问题原因分析
你的代码核心问题是每次循环调用了两次file.readline():
- 第一次在
if判断里,读取的行内容直接被丢弃,没有任何处理; - 第二次在
print里,才是实际打印的行。
同时计数器ct每次循环都强制加1,不管是否读到有效行。这就导致:
- 你只打印了文件中偶数行的内容,奇数行全被漏掉;
- 计数器会随着循环次数不断累积,当文件快读完时,前面已经循环了几百次,所以首次输出的行号直接跳到了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
相关产品推荐
相关产品推荐

