【发布时间】:2010-01-19 19:35:04
【问题描述】:
我刚刚通过表单上传了这个 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。
调试这样的事情的思考过程是什么?我从哪里开始寻找?
【问题讨论】:
-
CSV 文件是下面的文本;你应该使用
'r'的模式。 -
@Ignacio: 完全错误 csv.reader 和 csv.writer(Python 2.3 到 2.6)的文档说“”“如果 csvfile 是文件对象,则必须打开它在有区别的平台上使用“b”标志。“””。最好将其表示为“”“如果 csvfile 是一个文件对象,则它必须在有区别的平台上使用 'b' 标志打开。为了可移植性,无条件使用 'b' 打开”“”。此外,OP 位于 *x 平台上,其中“b”标志被忽略。