我似乎无法让 Bonobo ETL 库中的 CsvReader 生成元组以外的任何内容。该文档似乎表明它应该产生字典而不是元组,但尽我所能尝试我似乎无法让它传递除元组以外的任何东西。我真的很想访问附加到每个值的列名。它会抛出一个错误,提示在传递时存在列名,但在我定义的转换方法中,只有值本身可用。
import bonobo
def printer(*csv):
print(csv)
def get_graph(**options):
graph = bonobo.Graph()
graph.add_chain(
bonobo.CsvReader('csv.txt'),
printer
)
return graph
def get_services(**options):
return {}
if __name__ == '__main__':
parser = bonobo.get_argument_parser()
with bonobo.parse_args(parser) as options:
bonobo.run(get_graph(**options), services=get_services(**options))
它与打印机方法的参数有关吗?我知道,*csv
由于参数解包了可迭代的参数,但任何其他可能的参数声明只会引发 typeError。
有什么建议么?完全避免使用内置的 Bonobo CsvReader 并创建一个使用 DictReader 或其他东西的提取方法会更好吗?
*csv
编辑:这是使用除作为打印机()的参数之外的任何其他内容引发的错误。
CRIT|0002|bonobo.execution.contexts.base←[90m:←[39m ←[90m│ ←[39mTraceback(最近一次调用最后):←[90m│←[39m 文件“X:\Programming\pyWarehouse\warehouse_env\ lib\site-packages\bonobo\config\processors.py",第 102 行,我正在调用 ←[90m│ ←[39m bound = self._bind(_input) ←[90m│ ←[39m 文件“X:\Programming\pyWarehouse\warehouse_env\lib\site-packages\bonobo\config\processors.py”,第 89 行, 在 _bind ←[90m│ ←[39m return bind(*self.args, *_input, **self.kwargs) ←[90m│ ←[39m File "C:\Users\Accounting Admin\AppData\Local\Programs\ Python\Python37-32\lib\inspect.py", line 3002, in b ind ←[90m│ ←[39m return args[0]._bind(args[1:], kwargs) ←[90m│ ←[39m 文件“C:\Users\Accounting Admin\AppData\Local\Programs\Python\Python37-32\lib\inspect.py”,第 2923 行,in _bind ←[90m│ ←[39m raise TypeError('too many positional arguments' ) from None ←[90m├←[39m←[100m←[97m TypeError ←[39m←[49m ←[97mtoo many positional arguments←[39m ←[90m│ ←[39m]上面的异常是下面异常的直接原因:←[90m│ ←[39mTraceback(最近一次调用最后):←[90m│ ←[39m 文件“X:\Programming\pyWarehouse\warehouse_env\lib\site-packages\bonobo\execution\contexts\node.py”,行102、循环中 ←[90m│ ←[39m self.step() ←[90m│ ←[39m 文件“X:\Programming\pyWarehouse\warehouse_env\lib\site-packages\bonobo\execution\contexts\node.py” ,第 132 行,在步骤 ←[90m│ ←[39m 结果 = self._stack(input_bag) ←[90m│ ←[39m 文件“X:\Programming\pyWarehouse\warehouse_env\lib\site-packages\bonobo\config\processors .py”,第 112 行,我在步骤 ←[90m│ ←[39m 结果 = self._stack(input_bag) ←[90m│ ←[39m 文件“X:\Programming\pyWarehouse\warehouse_env\lib\site-packages\bonobo\config\processors.py”,第 112 行,我在步骤 ←[90m│ ←[39m 结果 = self._stack(input_bag) ←[90m│ ←[39m 文件“X:\Programming\pyWarehouse\warehouse_env\lib\site-packages\bonobo\config\processors.py”,第 112 行,我调用 ←[90m│ ←[39m )) 从 exc ←[90m└←[39m←[100m←[97m bonobo.errors.UnrecoverableTypeError ←[39m←[49m ←[97m输入] 没有绑定到节点签名。Args: () 输入: Bag(id='1', name='Alice',age='20', height='62', weight='120.6') Kwargs: {} Signature: (csv)←[39m