如何获取CSV文件的行数?

时间:2017-01-09 17:21:58

标签: python csv count row

fieldnames = ['first_name', 'last_name', 'address']
with open('names.csv') as csvfile:
    reader = csv.DictReader(csvfile, fieldnames=fieldnames)
    for row in reader:
        print(row['first_name'], "'s number", row['last_name'], "address", row['adres'])

这是我打印CSV文件的代码。如果CSV文件为空,我想打印它是空的。我想如果我能得到文件的行数,我可以检查它是否为空。

4 个答案:

答案 0 :(得分:6)

只是做

len(list(reader))

它遍历reader对象以创建列表,然后计算长度&数字或行是列表长度(标题不包括在内)

请注意,此语句会占用该文件,因此如果您打算解析该文件,请将list(reader)变量存储在某处。

答案 1 :(得分:5)

使用sum函数(使用生成器表达式)获取行计数的有效方法:

with open('names.csv') as csvfile:
    row_count = sum(1 for row in csvfile)
    print(row_count if row_count else 'Empty')

答案 2 :(得分:0)

这个怎么样:

import os
os.stat("names.csv").st_size == 0

如果它为空则返回true,你想要这个吗?

答案 3 :(得分:0)

您还可以在解析文件时枚举条目,如下所示:

fieldnames = ['first_name', 'last_name', 'address']

with open('names.csv') as csvfile:
    reader = csv.DictReader(csvfile, fieldnames=fieldnames)
    for count, row in enumerate(reader):
        print(row['first_name'], "'s number", row['last_name'], "address", row['address'])            

    if count == 0:
        print("empty")
相关问题