保存Python-Luigi的返回值
这里有一个简单的例子。如果我有两个任务,分别是step1和step2,而step1是一个依赖任务,那么我该如何在step2中读取step1的返回值(输出)呢?
class step1(luigi.Task):
shardNum = luigi.Parameter()
def run(self):
with open('workfile1', 'w') as f:
f.write("TEST")
def output(self):
return [luigi.LocalTarget("workfile1")]
#HOW DO I READ THE RETURN VALUE OF THIS IN STEP2?
class step2(luigi.Task):
def requires(self):
#HOW CAN I GET THE TARGET; luigi.LocalTarget("workfile1"); AND USE IT ELSEHOW?
return step1()
def run(self):
with open('workfile2', 'w') as f:
f.write("TEST")
def output(self):
return luigi.LocalTarget("workfile2")
补充说明:这看起来有点像是变通的做法,但能用(有没有更好、更简单的方法呢?)
class step2(luigi.Task):
...
def run(self):
print(self.requires().output()[0])#prints the output from last function
with open('workfile2', 'w') as f:
f.write("TEST")
...
1 个回答
0
这是一个简洁的方法:
class step2(luigi.Task):
...
def run(self):
with self.input()[0].open() as f:
f.write('TEST')
...
如果你不把任务1的输出目标放在一个数组里,那样会更简洁。这样你就可以直接使用 with self.input().open()...
来获取数据了。