This code parses mail server log files and outputs statistics into an external file. Is there a way to make it more pythonic? Is it a good idea to use regex anywhere? Which libraries can reduce the length of code?
import sys
deferred_as_error = '--deferred-as-error' in sys.argv
# {session id: email}
logged_in = dict()
# {email: [success:fail]}
result = dict()
with open('maillog', 'r') as log_file:
for log in log_file:
if 'sasl_method=LOGIN' in log:
logged_in[log.split(': ')[1]] = log.split('sasl_username=')[-1][:-1]
elif 'removed' in log:
if log.split(': ')[1] in logged_in:
del logged_in[log.split(': ')[1]]
elif 'to=<' in log:
session_id = log.split(': ')[1]
if session_id in logged_in:
sender = logged_in[session_id]
if sender not in result:
result[sender] = [0, 0]
if 'status=sent' in log:
result[sender][0] += 1
elif 'status=bounced' in log or 'status=expired' in log:
result[sender][1] += 1
elif 'status=deferred' in log and deferred_as_error:
result[sender][1] += 1
output = open('output.txt', 'w')
print len(result)
for k, v in result.iteritems():
output.write("{0}: {1} {2}\n".format(k, v[0], v[1]))
output.close()