计算CSV Python中有多少行?

我正在使用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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值