Python计算行数n csv

时间:2014-07-24 15:44:07

标签: python csv count

您好我尝试使用以下代码来计算csv文件中的行数:

import os
os.chdir('C:\\Users')
csv_file = open("count_rows.csv", "rb")
row_count = sum(1 for row in csv_file.read())
csv_file.close()
print (row_count)

当文件只有3行时,上面的代码显示18为结果。

有什么建议吗?

非常感谢

3 个答案:

答案 0 :(得分:1)

以下行不是迭代行,而是文件内容的每个字节。 (迭代字符串对象产生单字符字符串)

row_count = sum(1 for row in csv_file.read())

要迭代行,只需迭代文件对象:

row_count = sum(1 for row in csv_file)

这是一个经过修改的版本:

# Using `with` statement, you don't need to close manually.
# Use raw string literal: you can avoid escape
with open(r"C:\Users\count_rows.csv") as csv_file:  # `r`: use text mode
    row_count = sum(1 for row in csv_file)
    print(row_count)

答案 1 :(得分:1)

csv_file应该是一个迭代器 - 你可以运行sum(1 for row in csv_file)

此外,最佳做法是使用a context manager打开文件:

with open('count_rows.csv') as buff:
  row_count = sum(1 for _ in buff)

print(row_count)

答案 2 :(得分:0)

任何文本文件(包括csv)都可以按如下方式计算行数:

>>> fname = "file.txt"
>>> with open(fname) as f:
...     for i, line in enumerate(f, 1):
...         pass
... print i

enumerate为所有行生成数字,并将其分配给i

当循环终止时,i保持行数。请注意,enumerate1 使用的参数,用于设置编号1.(感谢falsetru)