我正在使用python(Django Framework)来读取CSV文件。正如你所看到的,我只从这个CSV中拉出两行。我一直在试图做的是在一个变量中存储CSV的总行数。
我如何获得总行数?
file = object.myfilePath
fileObject = csv.reader(file)
for i in range(2):
data.append(fileObject.next())
我努力了:
len(fileObject)
fileObject.length
所属话题: count csv python, 发起人: yut, 时间: 2019-03-10, 浏览: 86
10 个回复
可能想在命令行中尝试如下所示的简单操作:
sed -n ‘$=’ filename
要么
wc -l filename
vfugit 2019-03-10
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
pquo 2019-03-10
上面的一些建议计算了csv文件中LINES的数量。但是某些CSV文件将包含带引号的字符串,这些字符串本身包含换行符。 MS CSV文件通常使用\ r \ n分隔记录,但在引用的字符串中单独使用\ n。
对于这样的文件,计算文件中的文本行(由换行符分隔)将产生过大的结果。因此,要获得准确的计数,您需要使用csv.reader来读取记录。
nut 2019-03-10
您需要计算行数:
row_count = sum(1 for row in fileObject) # fileObject is your csv.reader
将sum()与生成器表达式一起使用可以实现高效的计数器,从而避免将整个文件存储在内存中。 如果您已经开始阅读2行,则需要将这2行添加到总计中;已经读取的行不计算在内。
ut_eos 2019-03-10
numline = len(file_read.readlines())
xet 2019-03-10
首先,您必须打开文件
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的列表时,它会读取所有文件,并且文件中的指针会更改其位置
yeum 2019-03-10
这适用于csv和包含字符串的所有文件:
import os
numOfLines = int(os.popen(‘wc -l < file.csv’).read()[:-1])
如果csv文件包含字段行,您可以从上面的numOfLines中扣除一个:
numOfLines = numOfLines - 1
dquia 2019-03-10
要做到这一点你需要有一些像我的例子这样的代码
file = open(“Task1.csv”)
numline = len(file.readlines())
print (numline)
希望这有助于每个人
uqui 2019-03-10
我测试了几种代码,以便在速度方面获得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
请注意,在某些代码中,总线路未正确显示。 最好的选择是…
sum(1 for line in open(filename))
len(open(filename).readlines())
len(pd.read_csv(filename)) + 1
gut 2019-03-10
使用“list”来适应更加可行的对象。
然后你可以数数,跳过,变异直到你的心愿:
list(fileObject) #list values
len(list(fileObject)) # get length of file lines
list(fileObject)[10:] # skip first 10 lines