属性错误:'file'对象没有属性'DictReader'。

问题描述 投票:1回答:2

我正在创建一个临时的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文件,因为我有巨大的数据集要从数据库中获取,用于下面的步骤,而且一遍又一遍地加载数据会花费太多时间。

python csv dictionary temporary-files
2个回答
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 又正确了。


4
投票
  • 另一个导致该错误的原因是有一个文件名为 csv.py.
  • 这隐藏了Python内置的csv模块的名称。
  • 解决这个问题的方法是将用户创建的 csv.py 脚本文件。
© www.soinside.com 2019 - 2024. All rights reserved.