def delimited(filename, delimiter=' ', bufsize=4096): ''' Creates a generator of word from a file based on a delimiter (by default white space). ''' buf = '' with open(filename) as file: while True: newbuf = file.read(bufsize) if not newbuf: yield buf return buf += newbuf words = buf.split(delimiter) for word in words[:-1]: yield word buf = words[-1]