#!/usr/bin python3
# -*- encoding=utf-8 -*-
import os
from configparser import configparser
import zipfile
#####主要實現功能:1、路徑處理、2、解壓縮重複不壓縮、3、壓縮,其他的可能需要自己改寫
#判斷儲存路徑是否已經有相同檔案
def same(same_list,file_path):
####返回空:開始壓縮
#判斷資料夾是否為空,不為空。檢查是否有壓縮檔案
data_1=
if len(same_list):
#開啟返回的資料夾內容列表
for d1 in same_list:
#print(d1)
#判斷是否有壓縮檔案,有繼續
if ".zip" in d1:
print("有壓縮檔案")
# print("解壓路徑",file_path +"\\" +d1 )#d:\xm\python_xm\xm1\log\
##最終儲存壓縮檔案路徑=file_path:儲存路徑+d1:壓縮件名字
frzip = zipfile.zipfile(file_path +"\\" +d1, "r", zipfile.zip_deflated)
#解壓獲取解壓包資料
data_file = frzip.namelist()
#關閉frzip.close()
#新增解壓資料到指定列表
else:
print("沒有壓縮檔案")
# print("data_1",data_1)
#判斷解壓的list是否為空
return data_1 if len(data_1) else none
else:
print("檔案為空,沒有壓縮檔案")
#判斷解壓的list是否為空
return data_1 if len(data_1) else none
#路徑處理
def path_data(path_list):
#獲取path_list配置路徑下所有資訊
usr_list=os.listdir(path_list)#['1234', '202001', '202101', '__init__.py']
usr_dict={}
#獲取usr_list列表中檔案資訊
for i in usr_list:
# print(i)
ss1=0
#解決目標資料夾為空問題
try:
print(os.listdir(path_list+"\\"+i))
ss1=1 if len(os.listdir(path_list+"\\"+i)) else 0
except:
print("目標不是資料夾")
ss1=0
if "20" in i and ss1:
usr_list_kk =
# 拼接獲取日誌路徑+檔案資訊=最終存放檔案的資料夾位址
usr_list1=os.path.join(path_list+"\\"+i)
# print(usr_list1)
#跳過異常
try:
# 開啟最終單個資料夾獲取資料夾中檔案資訊成list
usr_list2=os.listdir(usr_list1)
# print(usr_list2)
#usr_list2資料夾是否為空,為空跳過
if usr_list2:
#usr_list2檔案不為空,讀取資料夾中檔案資訊k
# print("usr_list2",usr_list2)
for k in usr_list2:
# print(k)
#新增到url_dict字典
# url_dict.update()
except:
print("error:不是資料夾list")
usr_dict.update()
# 返回最終資料
#print(url_dict)
return usr_dict
#壓縮儲存方法
def path_file(a,path_list,file_path):
same_list = os.listdir(file_path)
print(same_list)
# print("same_list,file_path",same_list,file_path)
#執行資料去重方法
data1 = same(same_list,file_path)
#判斷壓縮檔案是否為空
if data1==none:
print("建立壓縮")
# print(a)
for k, d in a.items():
# print(k,d,file_path + "\\" + k + ".zip")
for d1 in d:
# 儲存路徑+壓縮包名
f = zipfile.zipfile(file_path + "\\" +d1+".zip","w",zipfile.zip_deflated)
# print(os.path.join(path_list+"\\"+k,d1))
f.write(os.path.join(path_list+"\\"+k,d1),k+"\\"+d1)
f.close()
print("完成!")
#找到了壓縮檔案並有值,做判斷看是否新獲取的資料,有在壓縮檔案重複
else:
print("增量壓縮")
s1=0
for k, d in a.items():
# print(k,d)
for d1 in d:
# print(k+"/"+d1,data1[s1])
# print("data1", data1, len(data1),k+"/"+d1)
# data1=data1 if len(data1)>0 else k+"/"+d1
# print("data1",data1,len(data1),k+"/"+d1)
data2=none
try:
data2=data1[s1]
except:
data2=data1
print("下標取不到值")
if k+"/"+d1 in data2:
print("重複資料不做處理")
else:
#儲存路徑+壓縮包名
f =zipfile.zipfile(file_path+"\\"+d1+".zip","w",zipfile.zip_deflated)
#print(os.path.join(path_list + "\\" + k, d1))
f.write(os.path.join(path_list + "\\" + k, d1), k + "\\" + d1)
f.close()
s1 += 1
print("完成!")
if __name__=="__main__":
# 方法例項化
conf = configparser()
# 獲取配置,linux中配置路徑有可能需要寫絕對路徑,否則無法識別
conf.read("./path_conf.ini",encoding="utf-8")
# #獲取日誌路徑
path_list = conf.get("path_url", "url1")
# 儲存壓縮日誌路徑
file_path = conf.get("path_url", "url2")
#路徑判斷處理
a = path_data(path_list)
# print(a)
#壓縮儲存方法
path_file(a,path_list,file_path)
path_conf.ini配置檔案
[path_url]
#獲取日誌路徑
url1=d:\xm\python_xm\xm1\log\11
#儲存壓縮壓縮日誌路徑
url2=d:\xm\python_xm\xm1\telnet_sh
Python指令碼,定時刪除歸檔日誌檔案
usr bin env python3 coding utf 8 import math,os,sys,time import traceback import subprocess import datetime 定時任務指令碼,刪除歸檔日誌檔案 定義前一天的時間 thedaybeforeyest...
Oracle 刪除歸檔日誌指令碼
歸檔日誌記錄著資料庫的操作記錄,是做資料恢復的依據,如果資料庫開啟了歸檔模式,那麼就會產生大量的歸檔日誌,當然如果有rman備份的話,可以在備份之後刪除已經備份過的日誌,如果是沒有採用rman備份的話,就需要自己來刪除這寫歸檔日誌。下面的幾個指令碼就減輕了dba的工作量。linux 平台 0 2 h...
Oracle 刪除歸檔日誌指令碼
歸檔日誌記錄著資料庫的操作記錄,是做資料恢復的依據,如果資料庫開啟了歸檔模式,那麼就會產生大量的歸檔日誌,當然如果有rman備份的話,可以在備份之後刪除已經備份過的日誌,如果是沒有採用rman備份的話,就需要自己來刪除這寫歸檔日誌。下面的幾個指令碼就減輕了dba的工作量。linux 平台 0 2 h...