信用卡交易数据文件的记录

来源:互联网 发布:高仿包淘宝店铺名字 编辑:程序博客网 时间:2024/04/27 22:46

通过检测和异常处理记录信用卡交易记录

打开一个信用卡交易的数据文件(carddata.txt),加载所有交易,包括解释的字符串。
加载数据如下:

previous balance25debits21.64541.2425credits-25-541.24finance charge/late fees7.305

读取信用卡的数据文件,并计算最终的余额。
同时还有一个处理过程的日志文件生成。
主要使用try-except语句检测异常。
代码如下:

# -*- coding: utf-8 -*-"""Created on Mon Aug 21 17:13:14 2017@author: zhang"""#!/usr/bin/env pythondef safe_float(object):    try:        retval = float(object)    except (ValueError, TypeError), diag:        retval = str(diag)    return retvaldef main():    """handle all the data processing"""    log = open('cardlog.txt', 'w')    try:        ccfile = open('carddata.txt','r')    except IOError, e:        log.write('no transactions in this month')        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('current value:%.2f data...processed\n' % total)        else:            log.write('ignored: %s' % result)    print '$%.2f (new balance)' % total    log.close()if __name__=='__main__':    main()

运行的结果如下:

$58.94 (new balance)

日志文件如下:

account log:ignored: could not convert string to float: previous balancecurrent value:25.00 data...processedignored: could not convert string to float: debitscurrent value:46.64 data...processedcurrent value:587.88 data...processedcurrent value:612.88 data...processedignored: could not convert string to float: creditscurrent value:587.88 data...processedcurrent value:46.64 data...processedignored: could not convert string to float: finance charge/late feescurrent value:53.94 data...processedcurrent value:58.94 data...processed