BartlebyScrivener wrote: > Still new. I am trying to make a simple word count script. > > I found this in the great Python Cookbook, which allows me to process > every word in a file. But how do I use it to count the items generated? > > def words_of_file(thefilepath, line_to_words=str.split): > the_file = open(thefilepath) > for line in the_file: > for word in line_to_words(line): > yield word > the_file.close() > for word in words_of_file(thefilepath): > dosomethingwith(word) > > The best I could come up with: > > def words_of_file(thefilepath, line_to_words=str.split): > the_file = open(thefilepath) > for line in the_file: > for word in line_to_words(line): > yield word > the_file.close() > len(list(words_of_file(thefilepath))) > > But that seems clunky.
As clunky as it seems, I don't think you can beat it in terms of brevity; if you care about memory efficiency though, here's what I use: def length(iterable): try: return len(iterable) except: i = 0 for x in iterable: i += 1 return i You can even shadow the builtin len() if you prefer: import __builtin__ def len(iterable): try: return __builtin__.len(iterable) except: i = 0 for x in iterable: i += 1 return i HTH, George -- http://mail.python.org/mailman/listinfo/python-list