annotate numerics/gather.py @ 150:8a1fe454c98a

STUB
author Jeff Hammel <k0scist@gmail.com>
date Mon, 13 Apr 2015 10:17:47 -0700
parents 3a1f04f33feb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
1 #!/usr/bin/env python
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
3
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
4 """
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
5 gather files for processing
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
6 """
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
7
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
8 import argparse
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
9 import os
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
10 import subprocess
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
11 import sys
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
12
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
13 __all__ = ['find', 'main']
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
14 string = (str, unicode)
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
15
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
16 def find(directories, filenames=None, exts=None):
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
17 """gather files from directories"""
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
18
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
19
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
20 retval = []
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
21 if isinstance(directories, string):
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
22 directories = [directories]
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
23
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
24 directories = [os.path.abspath(d) for d in directories]
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
25
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
26 for d in directories:
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
27
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
28 if not os.path.exists(d):
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
29 continue
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
30 if not os.path.isdir(d):
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
31 retval.append(d)
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
32 continue
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
33
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
34 for item in sorted(os.listdir(d)):
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
35 path = os.path.join(d, item)
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
36
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
37 if os.path.isdir(path):
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
38 retval.extend(find(path, filenames=filenames, exts=exts))
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
39 else:
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
40 if filenames:
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
41 if item in filenames:
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
42 retval.append(path)
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
43 elif exts:
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
44 for ext in exts:
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
45 if path.endswith(ext):
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
46 retval.append(path)
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
47 break
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
48 else:
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
49 retval.append(path)
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
50
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
51 return retval
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
52
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
53
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
54 def main(args=sys.argv[1:]):
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
55 """CLI"""
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
56
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
57 # parse command line
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
58 parser = argparse.ArgumentParser(description=__doc__)
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
59 parser.add_argument('path', nargs='+', help="paths")
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
60 parser.add_argument('-e', '--ext', dest='exts',
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
61 nargs='+', help='extensions')
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
62 options = parser.parse_args(args)
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
63
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
64 # gather
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
65 paths = find(options.path, exts=options.exts)
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
66
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
67 # scatter
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
68 print ('\n'.join(paths))
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
69
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
70 if __name__ == '__main__':
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
71 main()