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

谢谢

4

1 回答 1

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 循环立即终止。

于 2013-05-10T20:54:50.193 回答