我刚刚通过表单上传了这个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。
调试这样的事情的思考过程是什么?我从哪里开始寻找?
答案 0 :(得分:1)
你可以做几件事:
DictReader
至少需要两个参数,而您传递的是>>> help(csv.DictReader)
并得出相同的结论。由于阅读文档可能会解释其中第二个参数应该是fieldnames
(我认为列表就足够了),重要的是这些信息在错误信息中传达了!
答案 1 :(得分:1)
Silent Ghost所说的一切,加上:
重点改变:在我看来,最重要的一点是仔细阅读错误信息。在这种情况下,它简单明了地告诉你需要提供另一个参数。检查帮助(或您正在运行的Python版本的文档)遵循...
另一点:确保您了解您的代码正在做什么。 csv.DictReader()不会打开文件。文件系统权限不相关 - 您已经打开文件并将句柄传递给csv.DictReader()。