打开csv.DictReader文件时出现TypeError?
我刚通过一个表单上传了这个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
(我猜一个列表就可以),而且这个信息其实在错误提示中也有说明!