X-Git-Url: https://code.delx.au/transcoding/blobdiff_plain/e4ad0b890d4bbb3c07579a84422f425817823301..HEAD:/batch-run diff --git a/batch-run b/batch-run index d62cec1..5290dc8 100755 --- a/batch-run +++ b/batch-run @@ -1,4 +1,4 @@ -#!/usr/bin/python2 +#!/usr/bin/python import itertools import optparse @@ -10,7 +10,7 @@ import time def run(running_jobs, cmd): - p = subprocess.Popen(cmd, stdin=file(os.devnull, 'r')) + p = subprocess.Popen(cmd, stdin=subprocess.DEVNULL) running_jobs.append(p) def wait_for_completion(max_jobs, running_jobs): @@ -60,6 +60,14 @@ def batch_process(opts, lines): # Wait for remaining jobs to finish wait_for_completion(1, running_jobs) +def make_and_chdir(filename): + dirname = os.path.splitext(filename)[0] + ".out" + try: + os.makedirs(dirname) + except FileExistsError: + pass + os.chdir(dirname) + def parse_args(): parser = optparse.OptionParser(usage="%prog batchfile1 [batchfile2] ...") parser.add_option("-j", "--jobs", @@ -67,12 +75,17 @@ def parse_args(): help="The number of concurrent jobs to run") opts, args = parser.parse_args(sys.argv[1:]) opts.running_jobs = [] + args = map(os.path.abspath, args) return opts, args def main(): opts, args = parse_args() - for name in args: - batch_process(opts, parse_file(open(name))) + filenames = list(map(os.path.abspath, args)) + for filename in filenames: + print("Processing", filename) + make_and_chdir(filename) + with open(filename) as fd: + batch_process(opts, parse_file(fd)) if __name__ == "__main__": main()