首页 > 解决方案 > Python csv.DictReader 返回 KeyError

问题描述

我正在尝试创建一个根据用户输入读取/写入 csv 文件的脚本。它几乎模拟了密码管理器。但是,当我尝试使用 csv.DictReader 通过脚本查看它时,它返回 KeyError。

csv 文件创建为空白,数据通过脚本本身输入。

import csv

with open('Pass.csv') as csv_file:

    csv_reader = csv.DictReader(csv_file, delimiter=',')
    for lines in csv_reader:
        print(f'{row["application"]} | {row["ID"]} | {row["password"]}')

我注意到如果我改变

print(f'{row["application"]} | {row["ID"]} | {row["password"]}')

print(lines)

它返回以下输出:

OrderedDict([(None, ['application', 'ID', 'password'])])
OrderedDict([(None, ['asd', 'dsa', 'asd'])])

所以我的问题是为什么它首先返回 None 这似乎是导致 KeyError 出现的问题。

链接中是我用来测试 DictReader 的 csv 文件: http ://www.filedropper.com/pass_1

标签: python

解决方案


我运行了您的确切代码,但无法重现您的错误。输入两个条目后,我得到:

>>> readPass()
Application | ID | Password
ap1 | id1 | pw1
application | ID | password
ap2 | id2 | pw2

如您所见,打印工作正常,但您确实有一个错误,即您正在为 CSV 文件的每个条目编写新标题。


推荐阅读