See also


@split ( input, output, [extras,...] )

Splits a single set of input into multiple output, where the number of output may not be known beforehand.
Only out of date tasks (comparing input and output files) will be run


@split("big_file", '*.little_files')
def split_big_to_small(input_file, output_files):
    print "input_file = %s" % input_file
    print "output_file = %s" % output_file


will produce:

input_file = big_file
output_file = *.little_files


  • input = tasks_or_file_names

    can be a:

    1. (Nested) list of file name strings (as in the example above).

      File names containing *[]? will be expanded as a glob.
      E.g.:"a.*" => "a.1", "a.2"
    2. Task / list of tasks.

      File names are taken from the output of the specified task(s)

  • output = output

    Specifies the resulting output file name(s) after string substitution

    Can include glob patterns (e.g. "*.txt")

    These are used only to check if the task is up to date.
    Normally you would use either a glob (e.g. *.little_files as above) or a “sentinel file” to indicate that the task has completed successfully.
    You can of course do both:
    @split("big_file", ["sentinel.file", "*.little_files"])
    def split_big_to_small(input_file, output_files):
  • extras = extras

    Any extra parameters are passed verbatim to the task function

    If you are using named parameters, these can be passed as a list, i.e. extras= [...]

    Any extra parameters are consumed by the task function and not forwarded further down the pipeline.


Deprecated since Ruffus v 2.5

@split( input, output, filter = regex(...), add_inputs(...) | inputs(...), [|extras|_,...] ) is a synonym for @subdivide.