Python 如何检查csv.DictReader对象是否为空
我正在编写python代码,用DictReader从csv文件中读取内容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
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
将首先读取该行,随后的循环将不会迭代。谢谢,我将尝试一下。你是对的,现在再次检查我的代码,我意识到我不需要提前返回。