我正在尝试使用documentation
中显示的pygrametl CSVSource这是我的代码
import pygrametl
from pygrametl.datasources import CSVSource
src = CSVSource(csvfile=open('src.csv', 'r', 16384), \
delimiter=',')
但即使我使用确切的代码,我也会收到以下错误。
TypeError: init ()至少需要2个参数(给定1个)
我该如何解决这个问题?
答案 0 :(得分:1)
从您提到的文档中,我们可以看到 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.slim.js"></script>
**<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.js"></script>**
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.js"></script>
<script src="http://code.jquery.com/jquery-latest.js"></script>
只是CSVSource
模块中对DictReader
的引用。
如果我们查看csv
类的源代码(确切地说是DictReader
方法),我们会看到:
__init__
由于输入参数中没有关键字class DictReader:
def __init__(self, f, fieldnames=None, restkey=None, restval=None,
dialect="excel", *args, **kwds):
self._fieldnames = fieldnames # list of keys for the dict
self.restkey = restkey # key to catch long rows
self.restval = restval # default value for short rows
self.reader = reader(f, dialect, *args, **kwds)
self.dialect = dialect
self.line_num = 0
,因此该参数将传递给csvfile
,这意味着缺少参数**kwds
。我没有安装此库,但我认为只是在没有f
的情况下通过open('src.csv', 'r', 16384)
将解决此问题。像这样:
csvfile=
更新:刚刚安装了import pygrametl
from pygrametl.datasources import CSVSource
src = CSVSource(open('src.csv', 'r', 16384), delimiter=',')
并在没有pygrametl
的情况下进行了测试,它运行正常。