On 2016-03-17 15:29, Charles T. Smith wrote: > isready = re.compile ("(.*) is ready") > relreq = re.compile (".*release_req") > for fn in sys.argv[1:]: # logfile > name tn = None > with open (fn) as fd: > for line in fd: > #match = re.match ("(.*) is ready", line) > match = isready.match (line) > if match: > tn = match.group(1) > #match = re.match (".*release_req", line) > match = relreq.match (line) > if match:
Note that this "match" and "if" get executed for every line > #print "%s: %s" % (tn, line), > print tn > > vs. > > while (<>) { > if (/(.*) is ready/) { > $tn = $1; > } > elsif (/release_req/) { Note this else ^ > print "$tn\n"; > } > } Also, you might just test for string-presence on that second one So what happens if your code looks something like isready = re.compile ("(.*) is ready") for fn in sys.argv[1:]: # logfile name tn = None with open (fn) as fd: for line in fd: match = isready.match (line) if match: tn = match.group(1) elif "release_req" in line: print tn Not saying this will make a great deal of difference, but these two items jumped out at me. I'd even be tempted to just use string manipulations for the isready aspect as well. Something like (untested) IS_READY = " is ready" REL_REQ = "release_req" for n in sys.argv[1:]: tn = None with open(fn) as fd): for line in fd: try: index = line.rindex(IS_READY) except ValueError: if REL_REQ in line: print tn else: tn = line[:index] -tkc -- https://mail.python.org/mailman/listinfo/python-list