Luigi LocalTarget returns 通用文件名写入 nc 文件

Luigi LocalTarget returns generic filename writing nc file

我正在学习使用 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> 在与任务相同的目录中,而不是在名称 [=15] 的 testing 文件夹中=](文件内容应该是这样的)。可能是因为命名问题,当我重新 运行 任务时,它会创建文件的新副本,而不是看到此任务的输出文件已经创建。我已经尝试将相对和绝对文件路径作为 LocalTarget 对象的输入。我调用的 .write 方法需要作为文件路径的字符串输入,我想知道这是否会导致问题。

我需要做什么才能使用我给它的名称保存输出文件?

万一这很重要,这是我用来 运行 任务的命令:

PYTHONPATH='.' luigi --module basic_luigi WindDirection --uas-filepath /aboslute/path/to/my/file.nc --local-scheduler

应该是

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() 时,它将 return luigi.LocalTarget("testing/wdir.nc") 而不是输出路径。如果你想要路径,你应该调用 self.output().path