使用python计算csv文件中的行时出现问题

使用python计算csv文件中的行时出现问题,python,csv,Python,Csv,我有一个csv文件列表:“empty.csv”和“headerOnly.csv” 第一个文件为空,第二个文件只有一行(标题) 我试图在文件为空时引发异常,并在仅包含头时继续 with open(csvfile, mode='rb') as csv_file: #check for empty files print(sum(1 for line in csv_file))#prints number of lines in file

我有一个csv文件列表:“empty.csv”和“headerOnly.csv” 第一个文件为空,第二个文件只有一行(标题)

我试图在文件为空时引发异常,并在仅包含头时继续

 with open(csvfile, mode='rb') as csv_file:

            #check for empty files 
             print(sum(1 for line in csv_file))#prints number of lines in file 
             if(sum(1 for line in csv_file) == 0):
                 print("csv file is empty")
             elif(sum(1 for line in csv_file) == 1):
                 print( "only has header")
我知道“headerOnly.csv”文件只有一行,第一个print语句验证了这一点。即使“headerOnly.csv”的打印语句打印出1,它也永远不会到达elif语句,甚至会打印出该文件的“csv file is empty”,而该文件不是。。
不确定它为什么没有到达elif

csv\u文件
是文件中行的生成器。第一次循环时,它会读取所有行。第二次,没有更多的行可读取,因此循环返回
0

将结果保存到变量:

line_count =  sum(1 for line in csv_file)
print(line_count)
if line_count == 0:
    print("csv file is empty")
elif line_count == 1:
    print("only has header")
如果在此之后仍要读取文件,则需要倒带:

csv_file.seek(0)

csv_文件
是文件中行的生成器。第一次循环时,它会读取所有行。第二次,没有更多的行可读取,因此循环返回
0

将结果保存到变量:

line_count =  sum(1 for line in csv_file)
print(line_count)
if line_count == 0:
    print("csv file is empty")
elif line_count == 1:
    print("only has header")
如果在此之后仍要读取文件,则需要倒带:

csv_file.seek(0)