【发布时间】:2016-12-25 19:18:34
【问题描述】:
我正在处理大量 CSV 文件,每个文件都包含大量行。我的目标是逐行获取数据并使用 Python 将其写入数据库。但是,由于有大量数据,我想跟踪已写入的数据量。为此,我计算了排队的文件数量,并在每次文件完成时继续添加。
我想对 CSV 文件执行类似的操作,并显示我所在的行以及总共有多少行(例如:Currently on row 1 of X)。我可以通过从一个开始然后执行以下操作轻松获得当前行:currentRow += 1,但是我不确定如何在不经过耗时的阅读行的情况下获得总数。
另外,因为我的 CSV 文件都存储在 zip 档案中,我目前正在使用 ZipFile 模块读取它们,如下所示:
#The Zip archive and the csv files share the same name
with zipArchive.open(fileName[:-4] + '.csv', 'r') as csvFile:
lines = (line.decode('ascii') for line in csvFile)
currentRow = 1
for row in csv.reader(lines):
print(row)
currentRow += 1
关于如何快速获取 CSV 文件的总行数有什么想法吗?
【问题讨论】:
-
您是否试图避免读取该文件?如果没有,您可以使用
lines = len(open(csv).readlines()) -
@double_j 是正确的,我试图避免遍历每一行以计算总行数。但是,因为我正在读取存储在 zip 存档中的 CSV 文件,所以您的解决方案可能不适用。我更新了我的代码来解释我的过程。
-
从字面上看,这是您可以计算 csv 文件中行数的唯一(合理)方法 - 使用 csv 阅读器读取它。
-
我认为您应该查看getting line count cheaply in Python。这有很多相关的好答案。