簡單錯誤記錄(20200223)

2021-10-03 04:02:02 字數 2563 閱讀 2986

開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的**所在的檔名稱和行號。

處理:

1、記錄最多8條錯誤記錄,迴圈記錄(或者說最後只輸出最後出現的八條錯誤記錄),對相同的錯誤記錄(淨檔名稱和行號完全匹配)只記錄一條,錯誤計數增加;

2、 超過16個字元的檔名稱,只記錄檔案的最後有效16個字元;

3、 輸入的檔案可能帶路徑,記錄檔名稱不能帶路徑。

輸入描述:

一行或多行字串。每行包括帶路徑檔名稱,行號,以空格隔開。

輸出描述:

將所有的記錄統計並將結果輸出,格式:檔名 **行數 數目,乙個空格隔開

示例1

輸入e:\v1r2\product\fpgadrive.c 1325

輸出fpgadrive.c 1325 1

思路:這道題如果只是滿足示例的輸出那還是挺簡單的,但滿足題目的要求,就複雜很多。具體參見**中的注釋

# coding=utf-8

import sys

import re

arr=

res=

while

true

: count=

len(res)

line=sys.stdin.readline(

)if line ==

'\n'

:break

line = line.strip(

'\n'

)#檔名和行數之間可能不只乙個空格,所以用了正規表示式

row = re.split(r" +"

, line)

#'\\'應該是python對'\'做了轉義處理

name=row[0]

.split(

'\\')[

-1]#對相同的錯誤記錄(淨檔名稱和行號完全匹配)只記錄一條,錯誤計數增加,arr列表就是為了在這裡使用才定義的

if arr.count(name+

' '+row[1]

)>0:

idx=arr.index(name+

' '+row[1]

) ch=res[idx]

.split(

' ')

res[idx]

=ch[0]

+' '

+ch[1]

+' '

+str

(int

(ch[-1

])+1

)else

:#超過16個字元的檔名稱,只記錄檔案的最後有效16個字元

iflen

(name)

>16:

name=name[-16

:]' '+row[1]

)' '

+row[1]

+' '

+'1'

)#記錄最多8條錯誤記錄,迴圈記錄(或者說最後只輸出最後出現的八條錯誤記錄)

if count ==9:

res.pop(0)

for ch in res:

print

(ch)

輸入參考用例:

e:\v1r2\product\fpgadrive1.c 1325

e:\v1r2\product\fpgadrive2.c 1325

e:\v1r2\product\fpgadrive3.c 1325

e:\v1r2\product\fpgadrive4.c 1325

e:\v1r2\product\fpgadrive5.c 1325

e:\v1r2\product\fpgadrive6.c 1325

e:\v1r2\product\fpgadrive3.c 1325 #該行同3

e:\v1r2\product\fpgadrive7.c 1325

e:\v1r2\product\fpgadrive8.c 1325

e:\v1r2\product\fpgadrive7.c 1325 #該行同7,但過了8進入滾動記錄

e:\v1r2\product\fpgadoubledrive3.c 1325 #檔名超過16個字元

e:\v1r2\product\fpgadrive7.c 1325 #該行同7,驗證錯誤疊加

參考用例輸出:

fpgadrive2.c 1325 1

fpgadrive3.c 1325 2

fpgadrive4.c 1325 1

fpgadrive5.c 1325 1

fpgadrive6.c 1325 1

fpgadrive7.c 1325 3

fpgadrive8.c 1325 1

gadoubledrive3.c 1325 1

簡單錯誤記錄

使用了部落格的 設計思路。這裡主要記錄一下在處理這一題時自己理解錯的地方 1 需要從輸入的日誌資訊中提取檔名和行號。如果這樣想這個問題,那麼需要分割字串分別獲取檔名和行號。其實可以利用格式化輸入分別獲取檔名字串和行號整數值。2 輸入一條日誌,顯示一次更新的日誌資訊。理解為時迴圈輸入日誌資訊,然後將日...

簡單錯誤記錄

開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的 所在的檔名稱和行號。處理 1.記錄最多8條錯誤記錄,對相同的錯誤記錄 即檔名稱和行號完全匹配 只記錄一條,錯誤計數增加 檔案所在的目錄不同,檔名和行號相同也要合併 2.超過16個字元的檔名稱,只記錄檔案的最後有效16個字元 如果檔名不同,而只是檔名的後...

簡單的錯誤記錄

開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的 所在的檔名稱和行號。處理 1.記錄最多8條錯誤記錄,對相同的錯誤記錄 即檔名稱和行號完全匹配 只記錄一條,錯誤計數增加 檔案所在的目錄不同,檔名和行號相同也要合併 2.超過16個字元的檔名稱,只記錄檔案的最後有效16個字元 如果檔名不同,而只是檔名的後...