add filtering on glob pattern
authorDan White <dan@whiteaudio.com>
Thu, 12 Apr 2018 19:12:12 +0000 (14:12 -0500)
committerDan White <dan@whiteaudio.com>
Thu, 12 Apr 2018 19:12:12 +0000 (14:12 -0500)
TimeSampleHistogram

index c6c6ebddb26a42013c5491d0e9a0165895daaf22..b50bd108995d01a11012d3d6b5460047b9237c50 100755 (executable)
@@ -7,6 +7,7 @@
 # TODO add in-file and cmd line opt for sample spacing (10min vs min)
 
 import datetime as dt
+import fnmatch
 import optparse
 import os
 import sys
@@ -26,7 +27,8 @@ RE_SAMPLE = re.compile(r'^(?P<year>\d\d\d\d)-(?P<month>\d\d)-(?P<day>\d\d) (?P<h
 RE_M = re.compile(
     r'^([a-z]{2})(\d+|[A-Z][a-z]+)(\d+|[A-Z][a-z]+)(\d+|[A-Z][a-z]+)')
 
-parser = optparse.OptionParser()
+usage = 'usage: %prog [options] [pattern [pattern ...]]'
+parser = optparse.OptionParser(usage)
 parser.add_option('-s', '--start', dest='startdate',
                   help='include dates starting with YYYY-MM-DD', metavar='DATE')
 parser.add_option('-e', '--end', dest='enddate',
@@ -56,6 +58,10 @@ parser.add_option('-f', '--field-sep', dest='sep', type='str',
                   help='field separator', metavar='f', default='')
 (opt, args) = parser.parse_args()
 
+# default match is everything if not specified
+if not args:
+    args = ['*']
+
 #testing
 #opt.startdate = '2010-01-01'
 #opt.enddate = '2010-01-15'
@@ -250,6 +256,18 @@ if not opt.bare:
     print '-' * opt.width
 
 
+
+#
+# filter the data
+#
+keys = set()
+for pat in args:
+    keys |= set(fnmatch.filter(hist.keys(), pat))
+
+# new dict with only matching values
+hist = {k: hist[k] for k in keys}
+
+
 #
 # Display the histogram
 #