如何检查csv.DictReader对象是否为空

时间:2013-05-10 20:51:32

标签: python csv

我正在编写python代码以使用DictReader从csv文件中读取内容。

with open(parafile, "rb") as paracsv:         
    #Read in parameter values as a dictionary
    paradict = csv.DictReader(paracsv)
    if paradict.line_num <= 1:
        return None

如果从csv文件读取的行数不超过一行,我希望能够立即返回。

我已经尝试检查line_num,但即使文件中有多行,它也总是返回0。有谁知道检查这个的正确/有效方法是什么?

由于

1 个答案:

答案 0 :(得分:1)

如果没有读取行,您不能知道文件中有多少。请注意,csvreader.line_num attribute反映了到目前为止读取的行数,而不是文件中存在的行数:

  

从源迭代器读取的行数。这与返回的记录数不同,因为记录可以跨越多行。

只需阅读您的文件;如果文件中只有一行,那么你最终会提前返回

如果您没有读取任何行,则只返回None,您可以使用:

with open(parafile, "rb") as paracsv:         
    #Read in parameter values as a dictionary
    paradict = csv.DictReader(paracsv)
    has_rows = False
    for line in paradict:
        has_rows = True

    if not has_rows:
        return None

如果文件中第一个标题行之外没有行,则返回 early ,因为for循环会立即终止。