使用 namedtuple 非常简单,您可以生成一个 namedtuple 实例并将其扩展为下一个转换输入:
import bonobo
import collections
Hero = collections.namedtuple("Hero", ["name", "power"])
def produce():
yield Hero(name="Road Runner", power="speed")
yield Hero(name="Wile E. Coyote", power="traps")
yield Hero(name="Guido", power="dutch")
def consume(name, power):
print(name, "has", power, "power")
def get_graph():
graph = bonobo.Graph()
graph >> produce >> consume
return graph
if __name__ == "__main__":
with bonobo.parse_args() as options:
bonobo.run(get_graph())
的“输出字段”produce()
将从命名元组字段中设置,“输入字段”consume(...)
将从第一个输入行中检测。
该context.set_output_fields(...)
方法仅在出于某种原因不想使用命名数据结构(如命名元组)但更喜欢使用元组但需要命名元组中的值时才有用。
希望有帮助!