def safe_float(obj):
'safe version of float()'
try:
retval = float(obj)
except (ValueError, TypeError), diag:
retval = str(diag)
return retval
def data_process_handler():
log = open('cardlog.txt', 'w')
try:
ccfile = open('carddata.txt', 'r')
except IOError, e:
log.write('no txns this month\n')
log.close()
return
txns = ccfile.readlines()
ccfile.close()
total = 0.00
log.write('account log:\n')
for eachTxn in txns:
result = safe_float(eachTxn)
if isinstance(result, float):
total += result
log.write('data... processed\n')
else:
log.write('ignored: %s' % result)
print '$%.2f (new balance)' % (total)
log.close()
if __name__ == '__main__':
data_process_handler()
In [7]: data_process_handler()
$58.94 (new balance)
In [8]: !more carlog.txt
account log:
ignored: could not convert string to float: previous balance
data... processed
ignored: could not convert string to float: debits
data... processed
data... processed
data... processed
ignored: could not convert string to float: credits
data... processed
data... processed
ignored: could not convert string to float: finance charge/late fees
data... processed
data... processed
cat carddata.txt
previous balance
25
debits
21.64
541.24
25
credits
-25
-541.24
finance charge/late fees
7.30
5