打开csv.DictReader文件时出现TypeError?

0 投票
2 回答
762 浏览
提问于 2025-04-15 18:13

我刚通过一个表单上传了这个CSV文件,使用POST方法把它发送到我的Python CGI脚本。上传看起来是成功的。文件夹的权限设置为777,文件的权限设置为755。

>>> import csv
>>> csvHandle = open('files/TestData.csv', "rb")
>>> csvRawRecordDicts = csv.DictReader(csvHandle)

Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: __init__() takes at least 3 arguments (2 given)

这些值如下:

csvRawRecordDicts undefined, 
csv = <module 'csv' from '/usr/lib/python2.3/csv.pyc'>, 
csv.DictReader = <class csv.DictReader>, 
csvHandle = <open file 'files/TestData.csv', mode 'rb'>

这段代码在我本地的电脑上用Python 2.5运行得很好,但在2.3上就出错了。

遇到这种情况,我应该怎么思考来调试呢?我该从哪里开始查找问题呢?

2 个回答

1

Silent Ghost 说的所有内容,加上我自己的观点:

我认为最重要的一点是要仔细阅读错误信息。在这个情况下,错误信息很简单明了地告诉你,你需要提供另一个参数。接下来可以查看帮助文档(或者你正在使用的 Python 版本的文档)...

还有一点:确保你理解你的代码在做什么。csv.DictReader() 并不是用来打开文件的。文件系统的权限问题不相关——你已经打开了文件,并把文件句柄传给了 csv.DictReader()。

1

你可以做几件事情:

  • 查看相关文档,了解一下DictReader至少需要两个参数,而你只传了一个。
  • 尝试输入>>> help(csv.DictReader),你会得出同样的结论。

在阅读文档时,你会发现第二个参数应该是fieldnames(我猜一个列表就可以),而且这个信息其实在错误提示中也有说明!

撰写回答