我正在尝试执行以下操作:
reader = csv.DictReader(open(self.file_path), delimiter='|')
reader_length = sum([_ for item in reader])
for line in reader:
print line
但是,执行reader_length
行会使阅读器本身无法读取。请注意,我不想在阅读器上执行list()
,因为它太大而无法完全从内存中读取我的计算机。
答案 0 :(得分:6)
reader = list(csv.DictReader(open(self.file_path), delimiter='|'))
print len(reader)
是我想的一种方法
另一种方法是
reader = csv.DictReader(open(self.file_path), delimiter='|')
for i,row in enumerate(reader):
...
num_rows = i+1
答案 1 :(得分:6)
使用起始值为1
的枚举,当您到达文件末尾时,您将获得行数:
for count,line in enumerate(reader,1):
# do work
print count
或者如果您因为某种原因需要使用生成器表达式求和,并寻找文件的开头:
with open(self.file_path) as f:
reader = csv.DictReader(f, delimiter='|')
count = sum(1 for _ in reader)
f.seek(0)
reader = csv.DictReader(f, delimiter='|')
for line in reader:
print(line)