- 論壇徽章:
- 0
|
不用說啥了,注釋很清楚了~
[color="#008080"]# encoding:gb2312
[color="#008080"]#
[color="#008080"]# 本模塊利用timeItv模塊提供的轉(zhuǎn)換器進(jìn)行加班時間統(tǒng)計
[color="#008080"]# 輸入文件分行列出每天的簽到和簽退時間
[color="#008080"]# 讀入后計算每個有效行的加班時間
[color="#008080"]# 并在最后對超過最低時限的加班時間做出統(tǒng)計
[color="#008080"]# 結(jié)果輸出到另一文件中
[color="#008080"]# 其中兩種方式確定輸入文件名:bModeInput來控制
[color="#0000ff"]import [color="#000000"]timeItv
[color="#0000ff"]import [color="#800000"]os[color="#000000"],[color="#800000"]sys[color="#000000"],[color="#800000"]re
[color="#0000ff"]def [color="#000000"]file2list (_uf):
[color="#808000"]f [color="#008080"]= [color="#808000"]file[color="#000000"](_uf,[color="#ff00ff"]'r'[color="#000000"])
[color="#000000"]l [color="#008080"]= [color="#808000"]f[color="#008080"].[color="#808000"]readlines[color="#000000"]()
[color="#0000ff"]return [color="#000000"]l
[color="#0000ff"]def [color="#000000"]list2file (_uf,_l):
[color="#808000"]f [color="#008080"]= [color="#808000"]file[color="#000000"](_uf,[color="#ff00ff"]'w'[color="#000000"])
[color="#808000"]f[color="#008080"].[color="#808000"]writelines[color="#000000"](_l)
[color="#808000"]f[color="#008080"].[color="#808000"]close[color="#000000"]()
[color="#0000ff"]def [color="#000000"]exitByMsg (_sMsg):
[color="#0000ff"]print [color="#000000"]_sMsg
[color="#800000"]sys[color="#008080"].[color="#808000"]exit[color="#000000"]()
[color="#0000ff"]def [color="#000000"]getTimeAddWork (_sb,_se):
[color="#000000"]_iTimeAdd [color="#008080"]= [color="#000000"]timeItv[color="#008080"].[color="#000000"]time2itv(_se) [color="#008080"]- [color="#000000"]timeItv[color="#008080"].[color="#000000"]time2itv(_sb) [color="#008080"]- [color="#000000"]iTimeNormal
[color="#0000ff"]return [color="#000000"]timeItv[color="#008080"].[color="#000000"]itv2time(_iTimeAdd ),_iTimeAdd
[color="#0000ff"]def [color="#000000"]processFile (_uf):
[color="#000000"]_lOutput [color="#008080"]= [color="#000000"][]
[color="#000000"]_iTimeSumAdd [color="#008080"]= [color="#000000"]0
[color="#000000"]_lInput [color="#008080"]= [color="#000000"]file2list(_uf)
[color="#000000"]_pc [color="#008080"]= [color="#800000"]re[color="#008080"].[color="#808000"]compile[color="#000000"]( r[color="#ff00ff"]'^\s*(?P\S+)\s*(?P\S+)\s*$' [color="#000000"])
[color="#0000ff"]for [color="#000000"]_l [color="#0000ff"]in [color="#000000"]_lInput:
[color="#000000"]_m [color="#008080"]= [color="#000000"]_pc[color="#008080"].[color="#808000"]match[color="#000000"](_l)
[color="#0000ff"]if [color="#000000"]_m:
[color="#0000ff"]print [color="#ff00ff"]'m'
[color="#000000"]_sTimeAddWork,_iTimeAddWork [color="#008080"]= [color="#000000"]getTimeAddWork([color="#008080"]*[color="#000000"]_m[color="#008080"].[color="#808000"]group[color="#000000"]([color="#ff00ff"]'sTimeBegin'[color="#000000"],[color="#ff00ff"]'sTimeEnd'[color="#000000"]) )
[color="#0000ff"]if [color="#000000"]_sTimeAddWork [color="#008080"]> [color="#000000"]sTimeLimitBelow:
[color="#000000"]_iTimeSumAdd [color="#008080"]+= [color="#000000"]_iTimeAddWork
[color="#000000"]_lOutput[color="#008080"].[color="#808000"]append[color="#000000"]( _sTimeAddWork [color="#008080"]+[color="#ff00ff"]'\n' [color="#000000"])
[color="#0000ff"]else[color="#000000"]:
[color="#0000ff"]print [color="#ff00ff"]'n'
[color="#000000"]_lOutput[color="#008080"].[color="#808000"]append[color="#000000"]( [color="#ff00ff"]'\n' [color="#000000"])
[color="#000000"]_lOutput[color="#008080"].[color="#808000"]append[color="#000000"]( [color="#ff00ff"]'超過' [color="#008080"]+ [color="#000000"]sTimeLimitBelow [color="#008080"]+ [color="#ff00ff"]'的統(tǒng)計結(jié)果:' [color="#008080"]+ [color="#000000"]timeItv[color="#008080"].[color="#000000"]itv2time(_iTimeSumAdd))
[color="#0000ff"]return [color="#000000"]_lOutput
[color="#0000ff"]def [color="#000000"]getFilePath ():
[color="#000000"]_uf [color="#008080"]= [color="#000000"]uCoFinancialBase [color="#008080"]+ [color="#808000"]raw_input[color="#000000"]([color="#ff00ff"]'輸入加班計算時間文件名\n'[color="#008080"]+[color="#000000"]uCoFinancialBase[color="#008080"]+[color="#ff00ff"]'>'[color="#000000"])[color="#008080"].[color="#808000"]strip[color="#000000"]()
[color="#0000ff"]if [color="#800000"]os[color="#008080"].[color="#000000"]path[color="#008080"].[color="#808000"]isfile[color="#000000"](_uf):
[color="#0000ff"]return [color="#000000"]_uf
[color="#0000ff"]else [color="#000000"]:
[color="#000000"]exitByMsg([color="#ff00ff"]'file not found: '[color="#008080"]+[color="#000000"]_uf)
[color="#0000ff"]def [color="#000000"]getOutFilePath (_ufIn):
[color="#000000"]_iIdxDot [color="#008080"]= [color="#000000"]_ufIn[color="#008080"].[color="#808000"]rfind[color="#000000"]([color="#ff00ff"]'.'[color="#000000"])
[color="#0000ff"]return [color="#000000"]_ufIn[:_iIdxDot] [color="#008080"]+ [color="#ff00ff"]'_deal' [color="#008080"]+ [color="#000000"]_ufIn[_iIdxDot:]
[color="#0000ff"]if [color="#008080"]__name__ == [color="#ff00ff"]'__main__'[color="#000000"]:
[color="#008080"]# 基礎(chǔ)路徑
[color="#000000"]uCoFinancialBase [color="#008080"]= [color="#000000"]r[color="#ff00ff"]'E:\Company Financial'[color="#008080"]+[color="#800000"]os[color="#008080"].[color="#000000"]sep
[color="#008080"]# **輸入模式
[color="#000000"]bModeInput [color="#008080"]= [color="#ff00ff"]'auto'
[color="#0000ff"]if [color="#000000"]bModeInput [color="#008080"]== [color="#ff00ff"]'auto'[color="#000000"]:
[color="#000000"]ufInput [color="#008080"]= [color="#000000"]uCoFinancialBase [color="#008080"]+ [color="#000000"]r[color="#ff00ff"]'time_count_temp.txt'
[color="#0000ff"]elif [color="#000000"]bModeInput [color="#008080"]== [color="#ff00ff"]'interact' [color="#000000"]:
[color="#008080"]# 交互輸入文件路徑
[color="#000000"]ufInput [color="#008080"]= [color="#000000"]getFilePath()
[color="#008080"]# 正常工作時間
[color="#000000"]iTimeNormal [color="#008080"]= [color="#000000"]timeItv[color="#008080"].[color="#000000"]time2itv([color="#ff00ff"]'18:00:00'[color="#000000"]) [color="#008080"]- [color="#000000"]timeItv[color="#008080"].[color="#000000"]time2itv([color="#ff00ff"]'09:15:00'[color="#000000"])
[color="#008080"]# 統(tǒng)計限制時間下限
[color="#000000"]sTimeLimitBelow [color="#008080"]= [color="#ff00ff"]'00:59:59'
[color="#008080"]# 處理輸入
[color="#000000"]lResult [color="#008080"]= [color="#000000"]processFile (ufInput)
[color="#008080"]# 輸出文件路徑
[color="#000000"]ufOutput [color="#008080"]= [color="#000000"]getOutFilePath(ufInput)
[color="#008080"]# 輸出結(jié)果
[color="#000000"]list2file(ufOutput,lResult)
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/28253/showart_289142.html |
|