3 回答
TA贡献1856条经验 获得超11个赞
该with语句自动关闭文件。当您尝试通过语句外的 DictReader 访问数据时with,DictReader 无法访问已关闭的文件,因此您会得到 IOError。
您可以通过在从函数返回之前将文件中的行收集到列表中来解决这个问题:
def myfunc():
fileName: some file on my system
with open(fileName) as csv1:
dataDict = csv.DictReader(csv1, delimiter=',')
list_of_dicts = list(datadict)
return list_of_dicts
TA贡献1856条经验 获得超17个赞
DictReader 是懒惰的。实际上把它变成一个列表并返回它,这样文件就可以在它仍然打开的时候被读取。
def myfunc():
fileName: some file on my system
with open(fileName) as csv:
return list(csv.DictReader(csv, delimiter=','))
TA贡献1883条经验 获得超3个赞
你可以将它复制到另一个变量中并返回它......
def myfunc():
fileName: some file on my system
mydict = {}
with open(fileName) as f:
for row in csv.DictReader(f, delimiter=','):
mydict[row['first_column']] = row['second_column'] + row['third_column']
return mydict
用 csv 中的列名替换列名。
添加回答
举报