信用卡交易數據文件的記錄

通過檢測和異常處理記錄信用卡交易記錄

打開一個信用卡交易的數據文件(carddata.txt),加載所有交易,包括解釋的字符串。
加載數據如下:

previous balance
25
debits
21.64
541.24
25
credits
-25
-541.24
finance charge/late fees
7.30
5

讀取信用卡的數據文件,並計算最終的餘額。
同時還有一個處理過程的日誌文件生成。
主要使用try-except語句檢測異常。
代碼如下:

# -*- coding: utf-8 -*-
"""
Created on Mon Aug 21 17:13:14 2017

@author: zhang
"""

#!/usr/bin/env python

def safe_float(object):
    try:
        retval = float(object)
    except (ValueError, TypeError), diag:
        retval = str(diag)
    return retval

def 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 balance
current value:25.00 data...processed
ignored: could not convert string to float: debits
current value:46.64 data...processed
current value:587.88 data...processed
current value:612.88 data...processed
ignored: could not convert string to float: credits
current value:587.88 data...processed
current value:46.64 data...processed
ignored: could not convert string to float: finance charge/late fees
current value:53.94 data...processed
current value:58.94 data...processed
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章