From 12b2fadbabcd962e819b2d1747f6b7eb9a193307 Mon Sep 17 00:00:00 2001 From: Crista Lopes Date: Sat, 28 Dec 2013 15:58:40 -0800 Subject: [PATCH] Use introspection more meaningfully --- 15-introspective/tf-15.py | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/15-introspective/tf-15.py b/15-introspective/tf-15.py index 01f9553..ab4af9d 100755 --- a/15-introspective/tf-15.py +++ b/15-introspective/tf-15.py @@ -1,22 +1,20 @@ #!/usr/bin/env python import sys, re, operator, string, inspect -# -# The functions -# def read_stop_words(): - # Meta-level data: inspect.stack() and locals() - print "My name is " + inspect.stack()[0][3] + ", my arguments are " + str(locals().keys()) - print " and I'm being called from ", inspect.stack()[1][3] + """ This function can only be called from a function + named extract_words.""" + # Meta-level data: inspect.stack() + if inspect.stack()[1][3] != 'extract_words': + return None + with open('../stop_words.txt') as f: stop_words = f.read().split(',') stop_words.extend(list(string.ascii_lowercase)) return stop_words def extract_words(path_to_file): - # Meta-level data: inspect.stack() and locals() - print "My name is " + inspect.stack()[0][3] + ", my arguments are " + str(locals().keys()) - print " and I'm being called from ", inspect.stack()[1][3] + # Meta-level data: locals() with open(locals()['path_to_file']) as f: str_data = f.read() pattern = re.compile('[\W_]+') @@ -25,9 +23,7 @@ def extract_words(path_to_file): return [w for w in word_list if not w in stop_words] def frequencies(word_list): - # Meta-level data: inspect.stack() and locals() - print "My name is " + inspect.stack()[0][3] + ", my arguments are " + str(locals().keys()) - print " and I'm being called from ", inspect.stack()[1][3] + # Meta-level data: locals() word_freqs = {} for w in locals()['word_list']: if w in word_freqs: @@ -37,14 +33,9 @@ def frequencies(word_list): return word_freqs def sort(word_freq): - # Meta-level data: inspect.stack() and locals() - print "My name is " + inspect.stack()[0][3] + " and my arguments are " + str(locals().keys()) - print " and I'm being called from ", inspect.stack()[1][3] + # Meta-level data: locals() return sorted(locals()['word_freq'].iteritems(), key=operator.itemgetter(1), reverse=True) -# -# The main function -# def main(): word_freqs = sort(frequencies(extract_words(sys.argv[1]))) for (w, c) in word_freqs[0:25]: