Python在文件结束之前退出CSV文件

Python在文件结束之前退出CSV文件,python,django,django-1.6,Python,Django,Django 1.6,我有一个函数,它接收上传到django应用程序中的csv或txt文件,读取所有文件并将其处理到python列表中。我注意到,如果出于某种原因,文件包含空行,它不会读取到文件的末尾,并返回一个空列表。你认为我遗漏了什么吗?这是我的密码 是的,我可以告诉用户确保文件不包含任何空行,但我想我可以让脚本足够聪明,在读取文件时不会中断,直到文件结束 django#表单#类#视图 def读取文件内容(自身、文件、文件类型、邮件、发件人): 打印“内部读取文件” csvFIleData 07037062611

我有一个函数,它接收上传到django应用程序中的csv或txt文件,读取所有文件并将其处理到python列表中。我注意到,如果出于某种原因,文件包含空行,它不会读取到文件的末尾,并返回一个空列表。你认为我遗漏了什么吗?这是我的密码

是的,我可以告诉用户确保文件不包含任何空行,但我想我可以让脚本足够聪明,在读取文件时不会中断,直到文件结束

django#表单#类#视图 def读取文件内容(自身、文件、文件类型、邮件、发件人): 打印“内部读取文件”

csvFIleData 07037062611 07063724920

08065537377
08168571687

通过检查返回列表,可以跳过csv阅读器中的空行

for row in csv.reader(file):
    if not row:
       continue
    ...

您的问题不在于代码的csv读取部分。以下是csv读取部分的简化版本:

import csv

def read_csv(file):
    data = []
    for row in csv.reader(file):
        data.append(row)
    return data

if __name__ == '__main__':

    path = "test.csv"
    with open(path, 'r') as f:
        print(read_csv(f))
输出为:

[['07037062611 07063724920'], [], ['08065537377 08168571687']]

如您所见,它正确读取空白行并读取完整的文件。您的问题在于如何尝试使用空行,就好像它不是空的一样。您只需在使用该行之前检查它:

if row:
    #do something
else:
    #blank row

row
是空行的空列表,因此
num=str(re.sub(“[^0-9]”,“”,row[0])
应引发索引错误。您确定函数只是返回一个空列表吗?它没有引发任何错误。无论如何,谢谢。谢谢,我真不敢相信答案会那么简单,我就是看不出来。:)谢谢,非常感谢!
if row:
    #do something
else:
    #blank row