999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

用Python語言分析銀行自助設備交易流水文件

2010-04-12 00:00:00何惠英付少波付蘭芳
現代電子技術 2010年5期

摘 要:無人值守銀行自助設備的運行狀況是一項非常重要的內容,維護者必須能夠及時分析并處理設備所出現的各種故障。自助設備交易流水文件詳細記錄了設備的運行狀況,為了分析該文件,基于當前流行的Python語言,并配合wxPython GUI包為軟件開發平臺,開發了自助取款設備運行狀況分析程序,該軟件具有開發周期短、界面友好、操作簡單的優點。

關鍵詞:python;流水記錄文件;分析工具;ATM

中圖分類號:TP311文獻標識碼:A

文章編號:1004-373X(2010)05-131-04

Journal Log Files of ATM Based on Python

HE Huiying,FU Shaobo,AN Ju,FU Lanfang

(Academy of Military Transportation,Tianjin,300161,China)

Abstract:ATM′s running is very important,vindicator must analyse and deal with each fault in time and generally.ATM′s running program is developed,based on popular Python language with wxPython GUI toolkit.This method has short development period and friendly interface and simple operation.

Keywords:python;journal log files;analysis tool;ATM

銀行自助設備為用戶的銀行交易提供更多的方便,可以24 h為用戶提供服務。目前隨著銀行卡發行量的增多,銀行自助取款設備的使用頻率在逐步提高。但因自助取款設備無人值守的特點,設備的運行狀況便成了一個非常重要的關注點。目前除了實時的監控系統之外,流水記錄文件的分析便是機器運行狀況的主要參考內容。從機器流水記錄中可以分析機器的運行狀況、各周期交易量、正常及異常的交易明細等。大多自助設備的交易量很大,每日可達幾百筆業務,這樣,多臺機器經過幾個周期運行之后的數據量很大,這無疑給設備的故障分析工作帶來了很大的難度。因此,專為流水記錄文件寫一個分析軟件便顯得非常迫切。基于該背景,介紹如何使用Python語言開發分析流水記錄文件工具的過程。

1 Python語言介紹

Python是免費的解釋性語言[1],具有面向對象的特性,可以運行在多種操作系統之上,它繼承了傳統編譯語言的強大性和通用性,同時也借鑒了簡單腳本和解釋語言的易用性。Python具有清晰的結構、簡潔的語法以及強大的功能,可以完成從文本處理到網絡通信等各種工作,并且其自身已經提供了大量的模塊來實現各種功能,除此以外還可以使用C/C++來擴展,甚至還可以將其嵌入到其他語言中。

Python語言特點[2]:

(1) 自由軟件:遵循GPL協議,不需要支持任何費用,也不用擔心版權問題,可閱讀其源代碼。

(2) 跨平臺:Python最初是在MAC操作系統下實現的,有很強的移植性,可運行在多種流水行操作系統之上,如Linux,Windows,MAC等。

(3) 功能強大:可以使用在多個領域,如系統編程,幫助用戶完成繁瑣的日常工作;科學計算,它簡潔的語法可以像使用計算器一樣來完成科學計算;快速原型,它省去了編譯調試的過程,可以快速地實現系統原形;Web編程,使用它可以編寫CGI,而現在流行的Web框架也可以使用Python實現。

(4) 可擴展:通過使用C/C++可以對Python進行擴展;Python也可以嵌入到C/C++編寫的程序之中。在某些情況下,它可以作為動態鏈接庫的替代品在C/C++中使用。

(5) 易學易用:語法簡單;使用變量時無需事先聲明;使用Python不必關心內在的使用,它會自動地分配、回收內存;Python提供了強大的內置對象和方法,如本文使用的open()方法;使用Python可以減少其他編程語言的復雜性,例如在C語言中使用數十行代碼實現的排序,而在Python中,可以使用列表的排序函數輕易完成。

2 流水記錄文件特性

流水記錄文件是記錄機器運行狀態的log文件,包含機器運行時的各種硬件狀態、網絡狀態、用戶操作記錄、管理員操作記錄等內容,是分析機器運行狀況具的重要依據之一。

(1) 文件類型:以日期命名的純文本格式文件。

(2) 文件內容:交易時機器狀態及相關交易信息;

操作員對機器的操作記錄;

待機時機器當前狀態;

網絡鏈接狀態;

機器重啟時的相關信息等。

(3) 文件關鍵字:插卡日期、卡號、交易類別、交易金額、交易成功標志、交易失敗標志、失敗原因、網絡故障等。

(4) 文件位置:位于ATM機器硬盤內,部分文件同步于銀行后臺主機。

3 基于Python語言開發的分析流水記錄文件工具

3.1 開發原理

通過Python語言的內置函數open()來打開流水文件[3],返回一個文件對象,然后用for循環遍歷這個流水文件對象,通過字符串匹配的方式來查找主要關鍵字并保存相關信息,然后計算生成所需要的各種字符串信息或列表供分析使用。

3.2 環境介紹

開發語言:Python 2.5.4

界面框架:wxPython 2.8-win32-unicode-2.8.10.1-py25;

運行環境:所有 Unix 衍生系統(Linux,MacOS X,Solaris,FreeBSD等),Win32家族(Windows NT,2000,XP 等),

早期平臺:MacOS 8/9,Windows 3.x,DOS,OS/2,AIX[4]。

3.3 程序實現

該程序采用面向對象的編程方法來對各個模塊的功能進行實現,JrnAnalyse.pyw 來初始化程序,并調用mainframe模塊進行程序界面顯示,在mainframe模塊中調用jrn模塊進行流水文件分析,jrn模塊返回分析結果給mainframe模塊進行顯示或是存盤。程序框圖如圖1所示。

3.3.1 Python實現處理文件

文件也可以看作是Python中的數據類型。當使用Python的內置函數open打開一個文件時,返回一個文件對象。其原型如下所示 [5]:

open(filename,mode,bufsize)

其參數含義如下:

filename:要打開的文件名。

mode:可選參數,文件打開模式。

bufsize:可選參數,緩沖區大小。

其中mode可以是″r″表示讀方式打開文件;″w″表示以寫方式打開文件;″b″表示以二進制方式打開文件。

圖1 程序框圖

open()成功執行并返回一個文件對象之后,所有對該文件的后續操作都將通過這個“句柄”進行。文件方法可以分為四類:輸入,輸出,文件內移動,以及雜項操作。以下介紹要用到的幾個最基本的方法:

file.write():向文件中寫入字符串,使用此方法來保存成功交易明細或疑問帳信息[6]。

file.close():關閉打開的文件

對所打開的文件對象進行遍歷來查找所需要的信息,是進行流水記錄分析的重要過程,示例如下:

file=open(″filename″,″rU″)

#U參數可解決文件結束符不統一的問題,如\\\\r會替換為\\\,這樣在用for循環的時候就統一了行結束標志。

for line in file: #使用for循環對文件對象file進行遍歷,line為filename中的每一行數據。

print line#此例為打印line數據到屏幕

3.3.2 wxPython實現GUI界面顯示

wxPython是跨平臺工具庫wxWidgets的封裝。wxWidgets庫是由C++編寫的,它類似于Windows的MFC[7]。wxWidgets提供了對多種操作系統的支持。由于它良好的可移植性,wxPython也具備了跨平臺的能力。在Python中使用wxPython可以編寫具有跨平臺能力的GUI腳本。

這里介紹能夠顯示圖形界面的幾個主要步驟:

# -*- coding:utf-8 -*-

import wx

class MyApp(wx.App):

def OnInit(self):

frame=wx.Frame(parent=None,title=′Hello,wxPython!′)

frame.Show()

return True

app=MyApp()

app.MainLoop()

開頭指定使用utf-8字符編碼,可顯示中文字符串。首先導入wx模塊,即wxPython。然后繼承wx模塊中的App類創建了一個MyApp類[8]。在Myapp類中重載了OnInit方法。OnInit方法是窗口初始化的一部分,在該方法中創建了一個窗口框架,并顯示該窗口。一般來講,OnInit方法最后應返回True。最后兩行,將MyApp類實例化成app對象,然后調用其MainLoop方法進入消息循環。

3.3.3 程序結構

(1) 程序啟動文件:JrnAnalyse.pyw

# -*- coding:utf-8 -*-

″″″

atmtool.py:A tool for analyse atm jounarl files# 文件注釋

″″″

import wx #導入wxpython模塊

import mainframe#導入mainframe模塊

class AtmApp(wx.App):#定義啟動類

def_init_(self,redirect=False,filename=None):# 重載生成對象時初始化方法

wx.App._init_(self,redirect,filename)

def OnInit(self):# 重載窗口初始化方法

self.main=mainframe.CreatMainframe(None)

self.main.Show()

self.SetTopWindow(self.main)

return True

if _name_ == ″_main_″:# 作為獨立程序啟動

application=AtmApp()

application.MainLoop()

(2) 界面顯示模塊:mainframe.py

在該模塊中定義了各種顯示組件、界面組件操作方法;各方法列表如下:

def _init_(self,parent):# 定義并初始化各種顯示組件

def openDir(self):# 定義打開打開流水文件方法

def runJrn(self): # 定義調用流水分析模塊方法

def On_Quit(self,event):# 定義退出程序方法

def On_Help(self,event):# 定義幫助文件方法

def On_About(self,event):# 定義關于程序方法

def OnItemSelected(self,event):# 定義點擊列表方法

def getColumnText(self,index,col):# 定義點擊選擇列表內容方法

def scroll2line(self,current_page):# 定義定位到疑問流水位置的方法

def OnOkTrans(self,event):# 定義保存成功交易方法

(3) 流水分析模塊:jrn.py

該模塊進行每個流水記錄文件的分析工作。

def get_date_card(self,line,jrnfp) [9]:# 定義獲取用戶交易日期卡號方法

def get_cwd_amount(self,line):# 定義獲取用戶取款交易金額方法

def get_dep_amount(self,line,jrnfp)# 定義獲取用戶存款交易金額方法

def total(self,jrns):# 定義計算多周期交易匯總信息方法

def question(self,jrns):# 定義獲取疑問交易方法

def hardware(self,jrns):# 定義獲取機器硬件異常方法

if _name_ == ″_main_″:# 流水模塊自省語句判斷

下面將主要流水模塊中的分析情況舉例說明如下:

獲取用戶交易日期和卡號例子:

def get_date_card(self,line,jrnfp):

date=″″

card_no=″″

if ′=AcceptCard′ in line:# 獲取插卡日期

date=line

cwd_amount=″″# 如果插卡則將cwd_amount清空

elif ′CardType:′ in line# 獲取插卡卡號

card_no=line# 將卡號保存在card_no變量中

return date,card_no# 返回插卡日期和卡號

獲取用戶取款交易金額例子:

def get_cwd_amount(self,line,jrnfp):

if ′-CWD Amount:′ in line:# 如果關鍵字-CWD Amount在本行中

temp=line.split()[1]

amount=int(temp.split(′:′)[1])# 將取款金額字符串轉成整形后保存

return amount# 返回取款金額

獲取用戶取款成功標志例子:

if ′WITHDRAWAL OK′ in line[10]:# 如果取款成功標志在本行中

cwd_ok_amount += amount# 累加取款金額

cwd_ok_num += 1# 累加取款筆數

money_taken=True# 只要條件匹配一次,就將取鈔標志置真

succeed_trans += (date.strip() + ″ ″ + card.strip() + ″ ″ + str(cwd_amount) + ″ cwd succeed\\\″) # 保存成功交易明細

獲取用戶存款交易金額例子:

def get_dep_amount(self,line,jrnfp):

dep_amount=0

if ′Amount:′ in line and ′TELLER:′ in line:#如果存款交易關鍵字在本行中

temp=line.split()[1]

dep_amount=int(temp.split(′:′)[1])#將存款金額字符串轉成整形后保存

return dep_amount# 返回存款金額

獲取用戶存款成功標志例子:

if ″CASH IN NOTES OK″ in line:# 如果成功取款標志在本行中

dep_ok_amount += dep_amount# 累加存款金額

dep_ok_num += 1# 累加存款筆數

cash_stored=True# 只要條件匹配一次,就將存鈔標志置真

succeed_trans += (date.strip() + ″ ″ + card.strip() + ″ ″ + str(dep_amount) + ″ dep succeed\\\″)

# 保存成功交易明細

獲取管理員清機加鈔標志:

if ′---RefillCash---′ in line:# 獲取加鈔標志

Here do what you want

程序運行示例:圖2是打開了多個流水記錄文件后程序的運行顯示效果圖。

上左:疑問交易明細 上右:疑問交易概覽

下左:各周期交易匯總下右:硬件關鍵信息

圖2 運行顯示效果圖

4 結 語

本文所述的基于Python語言的流水分析工具在分析自助設備運行狀況中得到了很好的應用,大大減少了

設備維護者的工作量。在一個交易周期還未結束時,就可提前發現已經出現的疑問帳務,對于由于網絡問題而導致服務器記錄缺失現象有很大幫助,同時也提高了對客戶的服務水平。基于此方法,還可以用Python語言編寫分析工具來分析其他領域的記錄文件。

參考文獻

[1]Mark Lutz.Learning Python[M].3版.南京:東南大學出版社,2008.

[2][美]Wesley J Chun.Python核心編程[M].2版.宋吉廣,譯.北京:人民郵電出版社,2007.

[3]孫廣磊.征服Python——語言基礎與典型應用[M].北京:人民郵電出版社,2007.

[4]NOEL RAPPIN.wxPython in Action[M].Manning Publications Co.,2006.

[5]Alex Martelli.Python in a Nutshell[M].2nd Edition.O′Reilly,2006.

[6]Magnus Lie Hetland.Beginning Python From Novice to Professional[M].Second Edition.2008.

[7]Tarek Ziadé.Expert Python Programming[M].Packt Publishing Ltd.2008.

[8]Jim Knowlton.Python?:Create-Modify-Reuse[M].Wiley Publishing Inc..2008.

[9]Mark Lutz.Programming Python[M].3rd Edition.O′Reilly,2006.

[10]David Mertz.Text Processing in Python[M].Addison Wesley,2003.

主站蜘蛛池模板: 国产精品浪潮Av| 久久久受www免费人成| 97se亚洲综合| 美女潮喷出白浆在线观看视频| 99视频在线免费观看| 欧美在线黄| 欧美日韩资源| 国产视频a| 少妇精品在线| 久久一本日韩精品中文字幕屁孩| 伊人狠狠丁香婷婷综合色| 午夜少妇精品视频小电影| 久久国产黑丝袜视频| 18禁影院亚洲专区| 精品视频在线一区| 91精选国产大片| 国产精品一区在线观看你懂的| 国产aⅴ无码专区亚洲av综合网| a欧美在线| 精品成人免费自拍视频| 中文国产成人久久精品小说| 免费Aⅴ片在线观看蜜芽Tⅴ| 看你懂的巨臀中文字幕一区二区| 亚洲日本韩在线观看| 国产在线视频导航| 日本一区高清| 玩两个丰满老熟女久久网| 国内熟女少妇一线天| www.日韩三级| 露脸真实国语乱在线观看| 国产人人乐人人爱| 国产白浆在线| 亚洲av无码专区久久蜜芽| 久久福利网| 欧美激情第一欧美在线| 亚洲国产精品无码AV| 中文无码精品A∨在线观看不卡| 97视频在线精品国自产拍| 日本国产精品| 四虎综合网| 欧美亚洲国产日韩电影在线| 亚洲婷婷丁香| 国产在线观看一区精品| 在线国产91| 色婷婷电影网| 国产成人艳妇AA视频在线| 久久亚洲国产最新网站| 中文字幕无线码一区| 国产午夜福利片在线观看| 婷婷伊人五月| 亚洲不卡影院| 91久久偷偷做嫩草影院电| 日韩东京热无码人妻| 色综合手机在线| 热久久综合这里只有精品电影| 久久中文字幕2021精品| 五月天在线网站| 日韩精品资源| 国产精品无码AV中文| 美女扒开下面流白浆在线试听| 人妻无码AⅤ中文字| 99re视频在线| 日韩欧美成人高清在线观看| 午夜限制老子影院888| 欧美久久网| 国产高清毛片| 真人免费一级毛片一区二区| 精品夜恋影院亚洲欧洲| 91麻豆精品视频| 热思思久久免费视频| 国产一区二区三区日韩精品| 国产女人18水真多毛片18精品| 日韩AV无码一区| 亚洲欧美另类日本| 国禁国产you女视频网站| a天堂视频| 97在线公开视频| 蜜桃视频一区| 精品综合久久久久久97超人| 国产成人精品综合| 就去吻亚洲精品国产欧美| 91在线免费公开视频|