我正在学习使用luigi,我想运行我编写的该任务,该任务将打开文件,对其进行修改并重新保存输出:
class WindDirection(luigi.Task):
uas_filepath = luigi.parameter.Parameter()
def output(self):
return luigi.LocalTarget("testing/wdir.nc")
def run(self):
# My task
with nc.Dataset(self.uas_filepath, 'r') as uas_reader:
wdir = NCdata.wind_dir_from_component(uas_reader)
# Writing out the output
wdir.write(self.output())
任务运行正常,但是将文件另存为<luigi.local_target.LocalTarget object at 0x7f86ed64ee48>
与任务在同一目录中,而不是保存在名称为testing
的{{1}}文件夹中(文件内容为应当如此)。也许是由于命名问题,当我重新运行任务时,它创建了文件的新副本,而不是看到此任务的输出文件已经创建。我已经尝试了相对和绝对文件路径作为wdir.nc
对象的输入。我正在调用的LocalTarget
方法需要一个作为文件路径的字符串输入,我想知道这是否会引起问题。
我需要怎么做才能将输出文件保存为我提供的名称?
如果很重要,这是我用来运行任务的命令:
.write
答案 0 :(得分:1)
应该是
class WindDirection(luigi.Task):
uas_filepath = luigi.parameter.Parameter()
def output(self):
return luigi.LocalTarget("testing/wdir.nc")
def run(self):
# My task
with nc.Dataset(self.uas_filepath, 'r') as uas_reader:
wdir = NCdata.wind_dir_from_component(uas_reader)
# Writing out the output
wdir.write(self.output().path)
调用self.output()
时,它将返回luigi.LocalTarget("testing/wdir.nc")
,而不是输出路径。如果需要路径,请致电self.output().path