三日前に、ログのpythonパッケージ

ログフォーマット

アプリ-2019-07-24.log

アプリ-2019-07-24.1.log

 その日のためのスクリプト内で複数のログファイルがあります。

は/ usr / binに/ Pythonの- * -コーディング:UTF-8 - * - 説明ログ圧縮

のインポートのOS
 インポート日時
 インポートインポートtarファイルの

#は、日付まで数日前に取得
DEFのGETDATE(before_day):
    今日 = datetime.datetimeの。今()
    は、オフセット計算 
    オフセット= datetime.timedelta(日数= - before_day)
    、所望の取得日時 
    re_date =(現在+オフセット).strftime(' %% Y-M-%のD ' 戻りre_date 

サブディレクトリが含まれていない、ファイルパスのセットを取得
デフgetFile(logsPath):
    logs_file = [] 
    file_listの = os.listdir(logsPath)
      FILE_NAME file_listの:
        パス = os.path.join(logsPath、FILE_NAME)
         場合os.path.isdir(パス):
             続ける
        logs_file.appendを(パス)

    リターンlogs_file 

检查文件、并压缩
DEF tar_file(logs_file、I):
    NEW_DATE = datetime.datetime.now()のstrftime(' %Y-%M-%D '当前时间 
    logs_old = []
     のための Flogs_file:
        圧縮ファイルを濾過
        IF f.endswith(" .tar.gzファイル" ):
             続行
        一定時間がログファイル名を取得する 
        MAT = re.search(R&LT " 。(\ 4 {D} - \ D {1。 、2} - \ D {1,2})" 、F)
         IF BOOL(MAT):
            デルタ = datetime.datetime.strptime(NEW_DATE、' %% Y-M-%以下のD ') - datetime.datetime.strptime( mat.group()、' %% Y-M-%のD ' IF delta.days == I:
              F = re.split(" / "、F)[ - 1 ] 
                logs_old.append(F)

    OLD_DATE = GETDATE(I)
     もし lenが(logs_old)== 0:
         戻り
    ファイル名 = re.split(" - " 、logs_old [0])[0]  =再.split(" / "は、ファイル名)[ - 1 ] 
    tar_file_name =ファイル名+ " - " + OLD_DATE + " .tar.gzの" 
    #1 プリント(tar_file_name)         
    場合os.path.exists(tar_file_name):
         プリント(tar_file_name、"存在である" 戻り
    タール = tarfile.open(tar_file_nameは、" W:GZ " のための I におけるlogs_old:
        tar.add(I)
        os.remove(I)
    tar.close 

場合 __name__ == " __main__ " 
    logsPath = " / OPT / " 
    os.chdir(logsPath)      
    logs_file = はgetFile(logsPath)
      I における範囲(1、4 ):
        tar_file(logs_file、I)

スケジュールされた時刻に設定してください

これは私のスクリプトパス(/opt/script/tar_logs.py)であります

0  5 * * *は/ usr / binに/ Pythonの/opt/script/tar_logs.py

 

参考  https://www.jianshu.com/p/e79ec1ce39d8

おすすめ

転載: www.cnblogs.com/xmc2017/p/11232088.html