Luigi LocalTarget返回写入nc文件的通用文件名

时间:2019-03-03 20:12:55

标签: python luigi

我正在学习使用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

1 个答案:

答案 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