|||一、问题场景:
之前写过脚本,在远程主机里连接Oracle,每天自动查询数据,导出csv文件,按日期命名排序。但是每天我需要自己手动压缩然后再复制出来。结果就是一个元旦假期回来,后台堆满了每天的csv文件-=。=#
所以想在原本的脚本上新增一个每日自动压缩当天的数据,删除源文件的功能。
|||二、需求分析:
新增的功能需要满足1.识别指定格式的文件csv——》2.压缩csv文件,按对应日期命名——》3.压缩完成后删除源文件。
|||三、效果演示:
|||四、源代码:
1 import os 2 import zipfile 3 import datetime 4 import time 5 6 #定义压缩函数 7 def csv_zip(): 8 path = "C:/Users/Administrator/Desktop/ziptest" 9 files = os.listdir(path)10 csv_files = []11 for f in files:12 if f.endswith('.csv'):13 csv_files.append(f)14 name_date = f[-8:-4]15 with zipfile.ZipFile('data'+ name_date + '.zip', 'w') as myzip:16 for csv in csv_files:17 myzip.write(csv)18 os.remove(csv) 19 print(name_date+' Zip Complete')20 21 def main(h=12, m=30,s=10):22 while True:23 while True:24 now = datetime.datetime.now()25 # 到达设定时间,结束内循环 以小时判断为例26 if now.hour==h:27 break28 # 不到时间就等10秒之后再次检测29 time.sleep(10)30 csv_zip()31 # 设置压缩函数的运行周期32 #time.sleep(86400)33 time.sleep(15)34 35 main()