pygrametl CSVSource TypeError:init()至少需要2个参数(给定1个)

时间:2016-12-25 12:24:32

标签: python csv typeerror pygrametl

我正在尝试使用documentation

中显示的pygrametl CSVSource

这是我的代码

import pygrametl
from pygrametl.datasources import CSVSource

src = CSVSource(csvfile=open('src.csv', 'r', 16384), \
                            delimiter=',')

但即使我使用确切的代码,我也会收到以下错误。

  

TypeError: init ()至少需要2个参数(给定1个)

我该如何解决这个问题?

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的情况下进行了测试,它运行正常。