AttributeError: 'file'对象没有属性'DictReader

1 投票
2 回答
4820 浏览
提问于 2025-04-18 16:25

我正在创建一个临时的CSV文件:

for formname in formnamesFinal:
    csv = tempfile.NamedTemporaryFile("w", prefix=formname+'_', suffix=".csv", dir = "/var/tmp/")
csv.write(....)

然后我在里面写了一些东西。现在我想用DictReader来读取这个文件:

content = csv.DictReader(csv, delimiter=';')
for contenthelp in content:
    contentlist.append(contenthelp)

但是我遇到了以下错误:

AttributeError: 'file' object has no attribute 'DictReader'

我需要逐个处理这些临时的CSV文件,因为我有很大的数据集要从数据库中获取,接下来的步骤如果每次都加载数据会花费太多时间。

2 个回答

3

这个错误的另一个原因是你可能有一个叫做 csv.py 的 Python 脚本文件。

这个文件会遮住 Python 自带的 csv 模块的名字。

要解决这个问题,你可以把自己创建的 csv.py 文件改个名字。

4
csv = tempfile.NamedTemporaryFile("w", prefix=formname+'_', suffix=".csv", dir = "/var/tmp/")

这一行代码把你对csv模块的引用给覆盖掉了。试着把它改成别的名字。

my_csv = tempfile.NamedTemporaryFile("w", prefix=formname+'_', suffix=".csv", dir = "/var/tmp/")

现在你应该能正常使用csv模块了。

撰写回答