python 項目實戰之備份文件夾並且壓縮文件夾及下面的文件


 
        

 

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 # @Time    : 2019/11/12 14:21
 4 # @Author  : zoulixiang
 5 # @Site    :
 6 # @File    : Rsync_day_tom.py
 7 # @Software: PyCharm
 8 import os
 9 import shutil
10 import datetime
11 import zipfile
12 
13 name = os.getcwd()
14 Dir = os.listdir(name)
15 
16 date_yester = (datetime.datetime.now() + datetime.timedelta(days=-1)).strftime("%Y")
17 
18 date_yesterday = (datetime.datetime.now() + datetime.timedelta(days=-1)).strftime("%Y%m%d")
19 
20 date_yesterday_seven = (datetime.datetime.now() + datetime.timedelta(days=-7)).strftime("%Y%m%d")
21 
22 def zip_ya(start_dir):
23     for dir_path, dir_names, file_names in os.walk(start_dir):
24         f_path = dir_path.replace(start_dir, '')  # 這一句很重要,不replace的話,就從根目錄開始復制
25         # print(f_path)
26         f_path = f_path and f_path + os.sep or ''  # 實現當前文件夾以及包含的所有文件的壓
27         for filename in file_names:
28             mailtime = os.path.getmtime(os.path.join(dir_path, filename))  # 查找當前文件所有時間
29             mailtdate = datetime.datetime.fromtimestamp(mailtime).strftime('%Y%m%d')  # 格式化轉化
30             new_dirs = date_yesterday + '/' + start_dir
31             if mailtdate == date_yesterday:  # 判斷昨天的時間
32                 """
33                 判斷當前的文件--昨天的日期,移動放到指定的位置(新建一個昨天的目錄)
34                 """
35                 if not os.path.exists(new_dirs):
36                     os.makedirs(new_dirs)
37                 if os.path.join(new_dirs, filename):
38                     print("已經移動至目標目錄",)
39                 else:
40                     shutil.move(os.path.join(dir_path, filename), new_dirs)
41 
42 def zipDir(dirpath):
43     '''
44     :param dirpath: 目標文件夾路徑
45     :return: 無
46     '''
47     z_file = dirpath + date_yesterday + '.zip'
48     zip = zipfile.ZipFile(z_file, 'w', zipfile.ZIP_DEFLATED,allowZip64=True)
49     for path, dirnames, filenames in os.walk(dirpath):
50         # 去掉目標和路徑,只對目標文件夾下邊的文件及文件夾進行壓縮(包括父文件夾本身)
51         this_path = os.path.abspath('.')
52         fpath = path.replace(this_path, '')
53         for filename in filenames:
54             zip.write(os.path.join(path, filename), os.path.join(fpath, filename))
55 
56         if os.path.isdir(path):
57             print("刪除成功", path)
58             shutil.rmtree(path)
59     zip.close()
60     return z_file
61 
62 def rm_path(Dir):
63     #print(rmpaths)
64     for j in Dir:
65         if j.strip().startswith(date_yester):
66             print(j)
67             """
68             如果大於七天,則刪除
69             """
70             if j < date_yesterday_seven:
71                 print("sss",j)
72                 shutil.rmtree(os.path.join(j))
73 
74 if __name__ == '__main__':
75 
76     dirs = []
77     for i in Dir:
78         if not i.strip().startswith("Rs"):
79             if not i.strip().startswith(date_yester):
80                 dirs.append(i)
81     #移動文件到指定的目錄
82     for i in dirs:
83         zip_ya(i)
84 
85     #壓縮昨天的文件到指定的目錄
86     #windowns
87     paths = "D:\\MATRIX_NETWORK\\test\\%s" % date_yesterday
88     #linux
89     #paths = "/home/log/%s" % date_yesterday
90     path_list = os.listdir(paths)
91     for i in path_list:
92         print(i)
93         zipDir(os.path.join(paths, i))
94 
95     #刪除7天前的目錄
96     rm_path(Dir)

 

效果展示

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM