|||一、问题场景:
之前写过脚本,在远程主机里连接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 break 28 # 不到时间就等10秒之后再次检测 29 time.sleep(10) 30 csv_zip() 31 # 设置压缩函数的运行周期 32 #time.sleep(86400) 33 time.sleep(15) 34 35 main()