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

时间:2010-01-19 19:35:04

标签: python csv

我刚刚通过表单上传了这个CSV文件,将其发布到我的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 个答案:

答案 0 :(得分:1)

你可以做几件事:

  • 阅读relevant docs并看到DictReader至少需要两个参数,而您传递的是
  • 尝试>>> help(csv.DictReader)并得出相同的结论。

由于阅读文档可能会解释其中第二个参数应该是fieldnames(我认为列表就足够了),重要的是这些信息在错误信息中传达了!

答案 1 :(得分:1)

Silent Ghost所说的一切,加上:

重点改变:在我看来,最重要的一点是仔细阅读错误信息。在这种情况下,它简单明了地告诉你需要提供另一个参数。检查帮助(或您正在运行的Python版本的文档)遵循...

另一点:确保您了解您的代码正在做什么。 csv.DictReader()不会打开文件。文件系统权限不相关 - 您已经打开文件并将句柄传递给csv.DictReader()。