1. 程式人生 > 其它 >從日誌中彙總資料

從日誌中彙總資料

背景:CS提了支援工單,需要匯出所有因為JD不符合格式要求而下架或者無法同步的職位。

這些資訊存在日誌中,但是由於不符合規則的職位太多,手動去找太麻煩,所以想辦法寫指令碼把資料匯出。

思路:把日誌拷貝下來,用正則把職位jobnumber提取出來。

一:把日誌檔案error_log.txt放在files下

import re
tt=open('files/error_log.txt')
ff=tt.read()
regex = re.findall(r".*?INFO: 職位下架 ValueError drop_job_number: (?P<jobnumber>.*?), e:account_abilities is empty.*?", ff)
ww=open('files/result.txt','w')
ww.write(regex)
ww.close()

Traceback (most recent call last):
File "/Users/cyw/Documents/python_test/learn.py", line 301, in <module>
ww.write(regex)
TypeError: write() argument must be str, not list

要先把regex列表轉成字串https://www.jb51.net/article/149359.htm

解決方法是使用字串物件的方法join,其描述如下。大概意思是:s.join(iterable)是將括號內的迭代物件(如列表)使用s字串作為連結將迭代物件中的元素拼接成一個字串,返回該字串。

regex_str=' '.join(regex)

最終程式碼
import re
tt=open('files/error_log.txt') #此處用的相對路徑,也可以用絕對路徑:/Users/cyw/Documents/python_test/files
ff=tt.read()
regex = re.findall(r".*?INFO: 職位下架 ValueError drop_job_number: (?P<jobnumber>.*?), e:account_abilities is empty.*?", ff)
regex_str=' '.join(regex)
ww=open('files/result.txt','w') #本來沒有result.txt檔案,用w如果該檔案不存在,建立新檔案。參考:
https://www.runoob.com/python/python-files-io.html

ww.write(regex_str)
ww.close()

可以把缺少requirement與account_abilities放一起處理,待優化