我有个档案文件.csv有一些数据:
fn,ln,tel
john,doe,023322
jul,dap,024322
jab,sac,0485
我想有一个数组,我可以这样访问:
file = 'file.csv'
with open(file,'rU') as f:
reader = csv.DictReader(f)
print reader[0].fn
所以我想打印第一张唱片的名字。不幸的是,我得到了这个错误:
ValueError: I/O operation on closed file
我如何才能做到这样,我不需要保持文件打开,我可以玩我的数组。顺便说一句,我不需要写回在csv文件,我只需要使用的数据,并为此,一个数组,我可以修改将是最好的。你知道吗
您需要在
with
块内访问reader*,而不是在它之外:一旦您将代码移到块外,
f
文件对象就关闭了,您无法再从读取器获取行。这就是with
语句的要点。你知道吗如果要随机访问文件中的所有行,请首先将读取器转换为列表:
list()
调用将遍历reader
,将产生的每个结果添加到list对象,直到所有行都被读取。确保您有足够的内存来容纳所有这些行。你知道吗相关问题 更多 >
编程相关推荐