1

ドキュメントに示されているように、pygrametl CSVSource を使用しようとしています

これは私のコードです

import pygrametl
from pygrametl.datasources import CSVSource

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

正確なコードを使用しても、次のエラーが発生します。

TypeError: init () は少なくとも 2 つの引数を取ります (1 つ指定)

どうすればこれを修正できますか?

4

1 に答える 1

1

あなたが言及したドキュメントから、それはモジュールからCSVSourceの単なる参照であることがわかります。DictReadercsv

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してテストしただけcsvfile=で、正常に動作します。

于 2016-12-25T12:54:39.913 に答える