From: James Bunton Date: Mon, 22 Feb 2016 22:23:30 +0000 (+1100) Subject: batch-run: mkdir and chdir before running X-Git-Url: https://code.delx.au/transcoding/commitdiff_plain/6cff906b387738d5a61b2c8991bd59a6d5d61fef batch-run: mkdir and chdir before running --- diff --git a/batch-run b/batch-run index ab231af..dcb60d8 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", @@ -72,9 +80,11 @@ def parse_args(): def main(): opts, args = parse_args() - for name in args: - os.chdir(os.path.dirname(name)) - batch_process(opts, parse_file(open(name))) + filenames = map(os.path.abspath, args) + for filename in filenames: + make_and_chdir(filename) + with open(filename) as fd: + batch_process(opts, parse_file(fd)) if __name__ == "__main__": main()