我正在使用一个名为 bonobo 的轻型 ETL 库。csv writer bonobo.CsvWriter 类有一个工厂方法:
def writer_factory(self, file):
return csv.writer(file, **self.get_dialect_kwargs()).writerow
与文档:
class CsvWriter(FileWriter, CsvHandler):
@Method(
__doc__='''
Builds the CSV writer, a.k.a an object we can pass a field collection to be written as one line in the
target file.
Defaults to builtin csv.writer(...).writerow, but can be overriden to fit your special needs.
'''
)
我想添加一些额外的参数来自定义我的 csv 文件,所以我尝试这样覆盖它:
class quoCsvWriter(bonobo.CsvWriter):
def writer_factory(self, file):
return csv.writer(file, **self.get_dialect_kwargs(),quoting=csv.QUOTE_NONNUMERIC).writerow
当我将节点添加到链中时,程序显示:
Traceback (most recent call last):
File "geocoding.py", line 162, in <module>
get_graph(),
File "geocoding.py", line 135, in get_graph
quoCsvWriter('db_addresses.csv')
File "/Users/xxxx/xxxx/lib/python3.6/site-packages/bonobo/config/configurables.py", line 152, in __new__
missing.remove(name)
KeyError: 'writer_factory'
任何提示表示赞赏。
更新:
与此同时,当我尝试做
bonobo.CsvWriter('filename.csv',quoting=csv.QUOTE_MINIMAL)
它抛出错误:
TypeError "quoting" must be an integer