统计CSV Python中有多less行?

我正在使用Python(Django框架)来读取CSV文件。 你可以看到,我只从这个CSV中拉出两行。 我一直在试图做的是在一个variables中存储CSV的总行数。

我怎样才能得到总的行数?

file = object.myfilePath fileObject = csv.reader(file) for i in range(2): data.append(fileObject.next()) 

我努力了:

 len(fileObject) fileObject.length 

你需要计算行数:

 row_count = sum(1 for row in fileObject) # fileObject is your csv.reader 

sum()与生成器expression式结合使用可以提高计数器的效率,避免将整个文件存储在内存中。

如果你已经读了2行开始,那么你需要添加这2行到你的总数; 已经被读取的行不被计数。

我testing了几种代码来获取csv文件中的行速度。

 import time import csv import pandas as pd filename = './sample_submission.csv' print("# sum(1 for line in open(filename)) ") t0 = time.time() n = sum(1 for line in open(filename)) print('Elapsed time : ', time.time() - t0) print('n = ', n) print('\n') print("# sum(1 for line in csv.reader(filename))") t0 = time.time() n = sum(1 for line in csv.reader(filename)) print('Elapsed time : ', time.time() - t0) print('n = ', n) print('\n') print("# sum(1 for line in pd.read_csv(filename)) ") t0 = time.time() n = sum(1 for line in pd.read_csv(filename)) print('Elapsed time : ', time.time() - t0) print('n = ', n) print('\n') print("# len(open(filename).readlines())") t0 = time.time() n = len(open(filename).readlines()) print('Elapsed time : ', time.time() - t0) print('n = ', n) print('\n') print("# len(pd.read_csv(filename)") t0 = time.time() n = len(pd.read_csv(filename)) + 1 print('Elapsed time : ', time.time() - t0) print('n = ', n) print('\n') print("# len(csv.reader(filename).readlines())") t0 = time.time() n = sum(1 for row in csv.reader(filename)) print('Elapsed time : ', time.time() - t0) print('n = ', n) print('\n') print("# for row in csv_reader:") t0 = time.time() count = 0 with open(filename, 'r') as count_file: csv_reader = csv.reader(count_file) for row in csv_reader: count += 1 print('Elapsed time : ', time.time() - t0) print('count = ', count) print('\n') print("# for i, line in enumerate(f, 1):") t0 = time.time() count = 0 with open(filename) as f: for i, line in enumerate(f, 1): count += 1 print('Elapsed time : ', time.time() - t0) print('count = ', count) print('\n') 

结果是…

 # sum(1 for line in open(filename)) Elapsed time : 0.6273655891418457 n = 2528244 # sum(1 for line in csv.reader(filename)) Elapsed time : 0.0 n = 23 # sum(1 for line in pd.read_csv(filename)) Elapsed time : 0.6410923004150391 n = 2 # len(open(filename).readlines()) Elapsed time : 0.6181032657623291 n = 2528244 # len(pd.read_csv(filename) Elapsed time : 0.623377799987793 n = 2528244 # len(csv.reader(filename).readlines()) Elapsed time : 0.0 n = 23 # for row in csv_reader: Elapsed time : 2.1439998149871826 count = 2528244 # for i, line in enumerate(f, 1): Elapsed time : 0.9610662460327148 count = 2528244 

注意在一些代码中,总行不能正确显示。

最好的select是…

  1. sum(1 for line in open(filename))
  2. len(open(filename).readlines())
  3. len(pd.read_csv(filename)) + 1

要做到这一点,你需要有一些像我这里的例子一样的代码

 file = open("Task1.csv") numline = len(file.readlines()) print (numline) 

希望这有助于每个人

以上几点build议都计算了csv文件中LINES的数量。 但一些CSV文件将包含引用的string,其本身包含换行符。 MS CSV文件通常用\ r \ n分隔logging,但在引用string中单独使用\ n。

对于像这样的文件,在文件中计算文本的行数(由换行符分隔)将会导致太大的结果。 因此,为了准确计数,您需要使用csv.reader来读取logging。

使用“列表”来适应更可行的对象。

然后,你可以计算,跳过,变异,直到你的心愿:

 list(fileObject) #list values len(list(fileObject)) # get length of file lines list(fileObject)[10:] # skip first 10 lines 
 numline = len(file_read.readlines()) 

可能要在命令行中尝试如下所示的简单操作:

sed -n '$=' filenamewc -l filename

 import csv count = 0 with open('filename.csv', 'rb') as count_file: csv_reader = csv.reader(count_file) for row in csv_reader: count += 1 print count 

这适用于csv和包含string的所有文件:

 import os numOfLines = int(os.popen('wc -l < file.csv').read()[:-1]) 

如果csv文件包含一个字段行,您可以从上面的numOfLines扣除一个:

 numOfLines = numOfLines - 1 

首先你必须打开文件

 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文件,则必须创build一个input_file.fseek(0),因为当您使用reader_file的列表时,它会读取所有文件,并且文件中的指针会更改其位置