您好我尝试使用以下代码来计算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为结果。
有什么建议吗?
非常感谢
答案 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
保持行数。请注意,enumerate
有1
使用的参数,用于设置编号1.(感谢falsetru)