Search code examples
python-3.xluigi

Luigi LocalTarget binary file


I am having troubles to write a binary LocalTarget in a Luigi pipeline in my project. I isolated the problem here:

class LuigiTest(luigi.Task):
    def output(self):
        return luigi.LocalTarget('test.npz')

    def run(self):
        with self.output().open('wb') as fout:
            np.savez_compressed(fout, array=np.asarray([1, 2, 3]))

I tried opening as 'w' and 'wb' but I keep getting the following error:

TypeError: write() argument must be str, not bytes

I am using python 3.5.1 and my version of luigi is 2.1.1


Solution

  • The problem was with the format of the LocalTarget. Changing it to:

    return luigi.LocalTarget('test.npz', format=luigi.format.Nop)
    

    solved the problem. However there was nothing about this in the documentation.