2017-01-09 232 views
2
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文件为空,我想打印它是空的。我认为如果我能得到文件的行数,我可以检查它是否为空。如何获取CSV文件的行数?

+0

[行数在csv.DictReader](可能的重复https://stackoverflow.com/questions/2890549/number -of-lines-in-csv-dictreader) – Abhijeet

回答

4

只是做

len(list(reader)) 

它通过reader对象遍历创建列表,然后计算长度&数量或行是列表的长度(不包括标题)

注意,这种说法消耗该文件,因此如果您打算解析该文件,则在某处存储list(reader)变量。

+0

感谢它的工作! :) –

5

的高效方式使用sum功能(带有发电机表达),以获得行数:

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

这个怎么样:

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

返回true,如果它是空的,你要想这对?

+1

如果只有一个标题行,那就会失败。 –

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")