Python csv转化为以第一行为标题的字典

2024-05-19 00:05:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个档案文件.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文件,我只需要使用的数据,并为此,一个数组,我可以修改将是最好的。你知道吗


Tags: 文件csv数据数组johnjulreaderfile
1条回答
网友
1楼 · 发布于 2024-05-19 00:05:34

您需要在with块内访问reader*,而不是在它之外:

file = 'file.csv'
with open(file,'rU') as f: 
    reader = csv.DictReader(f)
    first_row = next(reader)
    print first_row['fn']

一旦您将代码移到块外,f文件对象就关闭了,您无法再从读取器获取行。这就是with语句的要点。你知道吗

如果要随机访问文件中的所有行,请首先将读取器转换为列表:

file = 'file.csv'
with open(file,'rU') as f: 
    reader = csv.DictReader(f)
    all_rows = list(reader)

print all_rows[0]['fn']

list()调用将遍历reader,将产生的每个结果添加到list对象,直到所有行都被读取。确保您有足够的内存来容纳所有这些行。你知道吗

相关问题 更多 >

    热门问题