From 3921b05d53c5416d80e9c67b229a0ae923c111d0 Mon Sep 17 00:00:00 2001 From: Bruce Flynn <brucef@ssec.wisc.edu> Date: Wed, 23 Sep 2015 21:18:31 +0000 Subject: [PATCH] Add trunc code --- edosl0util/cli.py | 22 +++++++++++++++++++++- edosl0util/trunc.py | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 edosl0util/trunc.py diff --git a/edosl0util/cli.py b/edosl0util/cli.py index ff4b0bc..60051fb 100644 --- a/edosl0util/cli.py +++ b/edosl0util/cli.py @@ -2,8 +2,28 @@ Console script entry points for CLI tools. """ import os +from datetime import datetime -from edosl0util import split +from edosl0util import split, trunc + + +def _timestamp(v): + return datetime.strptime(v, '%Y-%m-%d %H:%M:%S') + + +def cmd_trunc(): + from argparse import ArgumentParser + parser = ArgumentParser() + parser.add_argument('-o', '--output') + parser.add_argument('filename') + parser.add_argument('start', type=_timestamp) + parser.add_argument('end', type=_timestamp) + args = parser.parse_args() + + output = args.output or os.path.basename(args.filename) + '.trunc' + with open(output, 'wb') as fptr: + for pkt in trunc.trunc_file(args.filename, args.start, args.end): + fptr.write(pkt.blob) def cmd_split(): diff --git a/edosl0util/trunc.py b/edosl0util/trunc.py new file mode 100644 index 0000000..38cdf80 --- /dev/null +++ b/edosl0util/trunc.py @@ -0,0 +1,21 @@ + +from edosl0util.stream import PacketStream + + +def trunc_stream(stream, start, end): + stream.seek(start) + + pkt = stream.next() + while pkt.stamp <= end: + # first pkt in group + yield pkt + # following pkts in group + pkt = stream.next() + while pkt.stamp is None: + yield pkt + pkt = stream.next() + + +def trunc_file(filename, start, end): + stream = PacketStream(open(filename)) + return trunc_stream(stream, start, end) -- GitLab