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

Python 如何检查csv.DictReader对象是否为空,python,csv,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 打开(parafile,“rb”)作为paracsv

我正在编写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
打开(parafile,“rb”)作为paracsv:
#作为字典读入参数值
paradict=csv.DictReader(paracsv)

如果paradict.line_num不读取行,就无法知道文件中有多少行。请注意,反映到目前为止读取的行数,而不是文件中存在的行数:

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

只要看看你的文件;如果文件中只有一行,最终还是会提前返回

如果仅在未读取行时返回
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

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

我还尝试了“If paradict.next()==None”。问题是,当我稍后尝试循环遍历这些行时,它从第二行开始。@edjie:没错。你必须使用
下一步(paradict,None)是None
;如果文件为空,则您的版本将引发
StopIteration
。你为什么要早点回来?如果第一行是headers,那么
DictReader
将首先读取该行,随后的循环将不会迭代。谢谢,我将尝试一下。你是对的,现在再次检查我的代码,我意识到我不需要提前返回。