我可能犯了一个愚蠢的错误,但我找不到它在哪里。我想计算我的csv文件中的行数。我写了这个,显然不起作用:我有row_count = 0,而它应该是400。干杯。
row_count = 0
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
mkshixfv1#
with open(adresse,"r") as f: reader = csv.reader(f,delimiter = ",") data = list(reader) row_count = len(data)
当保存data列表后文件指针已经到达文件末尾时,您正在尝试读取文件两次。
data
juzqafwq2#
首先,你必须用open打开文件:
open
input_file = open("nameOfFile.csv","r+")
然后使用csv.reader打开csv:
csv.reader
reader_file = csv.reader(input_file)
最后,您可以使用指令len获取行数:
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使用一个列表时,它会读取整个文件,并且文件中的指针会改变它的位置。
input_file.fseek(0)
reader_file
sauutmhj3#
如果你正在使用python3并且安装了pandas库,你可以使用
import pandas as pd results = pd.read_csv('f.csv') print(len(results))
jmp7cifd4#
我会考虑使用发电机。它可以完成这项工作,并使您免受任何类型的MemoryError的安全
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
pftdvrlh5#
为什么?因为:它节省了大量的内存,而不必创建列表。所以我觉得这样比较好
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.
查看this链接了解更多信息
mqxuamgl6#
# 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))
9cbw7uwe7#
简单地在Notepad++中打开csv文件。它会在瞬间显示总行数。:)或者在cmd提示符中,提供文件路径并键入命令 *find \c \v“some meaningless string”Filename.csv *
7条答案
按热度按时间mkshixfv1#
当保存
data
列表后文件指针已经到达文件末尾时,您正在尝试读取文件两次。juzqafwq2#
首先,你必须用
open
打开文件:然后使用
csv.reader
打开csv:最后,您可以使用指令
len
获取行数:代码如下:
记住,如果你想重用csv文件,你必须创建一个
input_file.fseek(0)
,因为当你为reader_file
使用一个列表时,它会读取整个文件,并且文件中的指针会改变它的位置。sauutmhj3#
如果你正在使用python3并且安装了pandas库,你可以使用
jmp7cifd4#
我会考虑使用发电机。它可以完成这项工作,并使您免受任何类型的
MemoryError
的安全然后呢
pftdvrlh5#
为了更好的可见性,在这里重新分享Erdös-Bacon的解决方案。
为什么?因为:它节省了大量的内存,而不必创建列表。
所以我觉得这样比较好
查看this链接了解更多信息
mqxuamgl6#
9cbw7uwe7#
简单地在Notepad++中打开csv文件。它会在瞬间显示总行数。:)或者在cmd提示符中,提供文件路径并键入命令 *find \c \v“some meaningless string”Filename.csv *