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

问题描述 投票:0回答:2

我正在编写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。有谁知道检查这个的正确/有效方法是什么?

谢谢

python csv
2个回答
1
投票

如果不阅读行,您就无法知道文件中有多少行。请注意,

csvreader.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

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


0
投票

感谢您的回答,这对我很有帮助!

另一种方法是您可以使用

for-else
块来处理
has_rows
标志

© www.soinside.com 2019 - 2024. All rights reserved.