我如何用python导入csv文件,而不是在尝试使用文件中的数据时得到错误(对关闭的文件进行i /O操作)


import csv
with open("insurance.csv", newline = "", ) as insurance_data:
insurance_reader = csv.DictReader(insurance_data)

两个代码段在两个不同的笔记本块

#calculate and seperate BMI categories
def bmi_categories(file):
obese_counter = 0
overweight_counter = 0
for item[BMI] in file:
if item[BMI] > 25 and item[BMI]<= 30:
overweight_counter +=1
elif item[BMI] > 30:
obese_counter += 1
else:
pass
bmi_categories(insurance_data)

我正在尝试创建一个函数,该函数将在当前以字典格式的数据集中获取bmi,并通过函数计算数据集中有多少肥胖/超重。

DictReader只创建对象。当你用with语句打开文件时,一旦代码低于"with"块。因此,当您尝试使用它时,您会得到关闭文件异常。解决方案可能很简单:只需将使用insurance_reader的代码移到with块下。

import csv
with open("insurance.csv", newline = "", ) as insurance_data:
insurance_reader = csv.DictReader(insurance_data)
for row in insurance_reader:
#call function on row here
#here is reader closed, do not use insurance_reader object

否则,为了更好的控制,我宁愿使用pandas。read_csv函数。对于open函数,可以考虑使用mode='r'以只读模式打开文件。

insurance_data为文件描述符。

你不能在第二个块中使用它,因为它在第一个块中已经关闭了(由于with语句)。

看起来您想要使用您在第一个块中构建的DictReader。

bmi_categories(insurance_reader)代替bmi_categories(insurance_data)

相关内容

  • 没有找到相关文章

最新更新