2017-01-09 74 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")