On Mon, Nov 7, 2011 at 10:56 PM, steve <st...@lonetwin.net> wrote:
Hey Shashidhar, > > Others may answer your question, I am not going to do that right away. > I'll just offer a few suggestions to clean up your code. If you do that, I > promise to answer your questions: > > a. Use os.path.join() to join path components > > b. You don't /have/ to read all the lines of the file into a list before > processing it. The pythonic way would be: > > with open(filename) as input_file: > for line in input_file.readline(): > ...do stuff ... > > c. You don't need to iterate over lists using numeric indexes. Even if you > /need/ numeric index, use enumerate. So, instead of : > > for index in range(len(somelist)): > ...do something with somelist[index] ... > OR > ...do something with index ... > > use something like: > > for element in somelist: > ...do something with element... > OR > for index, element in enumerate(somelist): > ...do something with index or element .... > > > d. Don't chain string operations to just match a substring, use regular > expressions. If you /have/ to chain string operations (for instance, to > extract rather than match), chain them only once. So, instead of : > > > if > all_lines_in_file[line].split(**'->')[1].split(')')[0].split("**'")[1].strip() > == "true": > ... > ... > > print "ZMP value %s" % all_lines_in_file[line].split(** > '->')[1].split(')')[0].split("**'")[1].strip() > > ...and more such monstrosities, do either: > > stuff_that_interests_me = line.split('->')[1].split(')')** > [0]("'")[1].strip() > > if stuff_that_interests_me == 'true': > .... > > or just: > matched = re.search("->\((.*)\)", line) # or some such, depending on the > format > > if matched: > stuff_that_interests_me = matched.group() > .... > > e. If you need one of three options as values of a dict (which I assume > will serve as a config dict), default the config keys to something. So, do: > > config = {'MyFirstKey' : 'ASK', > 'MyNextKey' : 'ASK', > ... > } > > for line in all_lines: > ...extract stuff_that_interests_me from line... > if 'MyFirstKey' in line: > if stuff_that_interests_me == 'true': > config['MyFirstKey'] = 'ON' > elif stuff_that_interests_me == 'false': > config['MyFirstKey'] = 'OFF' > ... > > > HTH, > cheers, > - steve > > Kudos, Steve. This is definitely the best answer which I have seen in this > discussion group, all these years. > I think you have set an example on how an experienced hand should direct a > not so-experienced one. > Many Many Thanks > > Ramdas S +91 9342 583 065 _______________________________________________ BangPypers mailing list BangPypers@python.org http://mail.python.org/mailman/listinfo/bangpypers