我正在编写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。有谁知道检查这个的正确/有效方法是什么?
谢谢
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 循环立即终止。
感谢您的回答,这对我很有帮助!
另一种方法是您可以使用
for-else
块来处理 has_rows
标志