首页 > 解决方案 > Python CSV阅读器:截断文件的开头?缺少前 44797 行

问题描述

我有一个 .csv 文件,我希望使用 csv 包通过 Python (3.x) 读取。但是,程序会截断文件的开头(前 44797 行)。

有问题的 .csv 文件可以从这个链接下载:https ://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data/downloads/new-york-city-airbnb-open-data .zip/3

file = "C:\\Users\\Owner\\Pictures\\Camera Roll\\new-york-city-airbnb- 
open-data\\AB_NYC_2019.csv"
rowsn = []
coln = []
with open(file, encoding="utf8") as csvfile:
    csvreader = csv.reader(csvfile)
    coln.append(0)
    for row in csvreader:
        rowsn.append(row)
        print("Appending" + str(row))
    for q in rowsn:
        for r in q:
            print(r, end="        ")
        print("\n")

我希望将整个文件逐行打印在终端上。但是,前 44797 行没有出现在屏幕上。请帮忙。谢谢。

标签: pythonpython-3.xcsvappend

解决方案


您可以中断并看到第一行的事实意味着您的控制台输出滚动得太快。

保存输出的 shell 有大约 4098 行的缓冲区。如果您打印 50k 行,前 (50.000-4098) 行滚动得如此之快,以至于您看不到它们。缓冲区仅保存最后 4098 行,因此您只能向后滚动。

如果您真的想滚动浏览 500k 行,请给自己时间阅读:

for linecount, q in enumerate(rowsn,1):
    for r in q:
        print(r, end="        ")
    print("\n")
    if not linecount % 4000:         # every 4000 lines, ask for return press
        intput("Hit return...")

现在您必须按大约 126 次左右的回车键...或者您可以研究如何扩大控制台的缓冲区 - 对于默认 Windows 控制台,您可以在此处获得更多提示:如何在 Windows 命令提示符中更改屏幕缓冲区大小从批处理脚本


推荐阅读