]> code.delx.au - transcoding/commitdiff
batch-run: mkdir and chdir before running
authorJames Bunton <jamesbunton@delx.net.au>
Mon, 22 Feb 2016 22:23:30 +0000 (09:23 +1100)
committerJames Bunton <jamesbunton@delx.net.au>
Mon, 22 Feb 2016 22:23:30 +0000 (09:23 +1100)
batch-run

index ab231afdf4e3d38781a9b33c4eab15de620f55e9..dcb60d8aefc0285ed33278961c114b441a324aeb 100755 (executable)
--- 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()