Hi All , Need advice on the following piece of code :
with open(r"file1.log", 'r') as f: tail = deque(maxlen=8) # the last eight lines script = None for line in f: tail.append(line) if re.search('\?/patch/\d{8}/\d{8}/admin/load.sql',line,re.IGNORECASE): script = line elif re.search(r'Starting\s+apply\s+for\s+patch\s+\d{8}/\d{8}', line, re.IGNORECASE): script = line elif re.search(r'set_metadata', line ,re.IGNORECASE) is not None: print "Reason of error \n", tail[-1] print "Script:\n", script print "Block of code:\n" for item in tail: print item print " Danger " break Now this is printing the last cached line in the variable line . However I would like to see the following output : 1) if it matches the pattern: \?/patch/\d{8}/\d{8}/admin/load.sql then look for the line "set_metadata" in the file1.log if it finds the pattern then print the line which matches the pattern \?/patch/\d{8}/\d{8}/admin/load.sql print last 4 lines of the tail array and exit 2) if it doesnot match '\?/patch/\d{8}/\d{8}/admin/load.sql' then look of the anothern pattern :Starting\s+apply\s+for\s+patch\s+\d{8}/\d{8} if it find the pattern then look for line "set_metadata" in the file1.log if it finds the pattern then print the line which matches the pattern \?/patch/\d{8}/\d{8}/admin/load.sql print all the lines in tail print a recommendation "Please check the installation" 3 ) if it doesnot match the pattern: \?/patch/\d{8}/\d{8}/admin/load.sql or '\?/patch/\d{8}/\d{8}/admin/load.sql' print "No match found refer to install guide" Can you advice what I can do to change the code . Thanks, -- _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor