我可能犯了一个愚蠢的错误,但我找不到原因。我想要计算我的csv文件中的行数。我写了这个代码,明显它没有起作用:row_count = 0
,而实际应该是400。谢谢。
f = open(adresse,"r")
reader = csv.reader(f,delimiter = ",")
data = [l for l in reader]
row_count = sum(1 for row in reader)
print row_count
我可能犯了一个愚蠢的错误,但我找不到原因。我想要计算我的csv文件中的行数。我写了这个代码,明显它没有起作用:row_count = 0
,而实际应该是400。谢谢。
f = open(adresse,"r")
reader = csv.reader(f,delimiter = ",")
data = [l for l in reader]
row_count = sum(1 for row in reader)
print row_count
with open(adresse,"r") as f:
reader = csv.reader(f,delimiter = ",")
data = list(reader)
row_count = len(data)
在保存data
列表后,文件指针已经到达文件末尾,您正在尝试两次读取文件。
entry_count = sum(1 for row in reader)
的操作,如果我们想要计算文件中的所有行数(包括标题行),则可以使用 line_count = sum(1 for line in f)
。 - Erdős-Bacon# 重置文件指针以进行迭代
csv_file.seek(0)
next(reader) # 跳过标题行
- undefined首先,您必须使用open
打开文件:
input_file = open("nameOfFile.csv","r+")
csv.reader
打开 csv 文件:reader_file = csv.reader(input_file)
len
获取行数:value = len(list(reader_file))
完整的代码如下:
input_file = open("nameOfFile.csv","r+")
reader_file = csv.reader(input_file)
value = len(list(reader_file))
请记住,如果您想要重复使用csv文件,则必须进行input_file.fseek(0)
操作,因为当您使用列表作为reader_file
时,它会读取整个文件,并且文件中的指针会改变其位置。
我建议使用生成器。它可以完成工作并保护您免受任何类型的MemoryError
。
def generator_count_file_rows(input_file):
for row in open(input_file,'r'):
yield row
然后
for row in generator_count_file_rows('very_large_set.csv'):
count+=1
如果您正在使用python3并安装了pandas库,可以使用以下方法:
import pandas as pd
results = pd.read_csv('f.csv')
print(len(results))
重要的内容隐藏在被标记为正确答案的解决方案的注释部分。
为什么? 因为:它可以节省大量内存而无需创建列表。
所以我认为这样做更好。
def read_raw_csv(file_name):
with open(file_name, 'r') as file:
csvreader = csv.reader(file)
# count number of rows
entry_count = sum(1 for row in csvreader)
print(entry_count-1) # -1 is for discarding header row.
点击此链接获取更多信息。
# with built in libraries
opened_file = open('f.csv')
from csv import reader
read_file = reader(opened_file)
apps_data = list(read_file)
rowcount = len(apps_data) #which incudes header row
print("Total rows incuding header: " + str(rowcount))
只需在Notepad++中打开csv文件,即可快速显示总行数。 :) 或者在cmd提示符中,提供文件路径并输入命令 find \c \v "一些无意义的字符串" 文件名.csv