From 2c92d844b01458e74bd7163d755518f7947e87ec Mon Sep 17 00:00:00 2001 From: Crista Lopes Date: Wed, 1 Jan 2014 17:42:19 -0800 Subject: [PATCH] Make the mvc example interactive --- 31-trinity/tf-31.py | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/31-trinity/tf-31.py b/31-trinity/tf-31.py index d7de370..ae7bad8 100755 --- a/31-trinity/tf-31.py +++ b/31-trinity/tf-31.py @@ -1,23 +1,21 @@ #!/usr/bin/env python - import sys, re, operator, collections -# -# Model -# class WordFrequenciesModel: """ Models the data. In this case, we're only interested in words and their frequencies as an end result """ freqs = {} def __init__(self, path_to_file): - stopwords = set(open('../stop_words.txt').read().split(',')) - words = re.findall('[a-z]{2,}', open(path_to_file).read().lower()) - self.freqs = collections.Counter(w for w in words if w not in stopwords) + self.update(path_to_file) - -# -# View -# + def update(self, path_to_file): + try: + stopwords = set(open('../stop_words.txt').read().split(',')) + words = re.findall('[a-z]{2,}', open(path_to_file).read().lower()) + self.freqs = collections.Counter(w for w in words if w not in stopwords) + except IOError: + print "File not found" + self.freqs = {} class WordFrequenciesView: def __init__(self, model): self._model = model @@ -27,18 +25,21 @@ class WordFrequenciesView: for (w, c) in sorted_freqs[:25]: print w, '-', c -# -# Controller -# class WordFrequencyController: def __init__(self, model, view): - self._model = model - self._view = view + self._model, self._view = model, view view.render() -# -# Main -# + def run(self): + while True: + print "Next file: " + sys.stdout.flush() + filename = sys.stdin.readline().strip() + self._model.update(filename) + self._view.render() + + m = WordFrequenciesModel(sys.argv[1]) v = WordFrequenciesView(m) c = WordFrequencyController(m, v) +c.run()