zoukankan      html  css  js  c++  java
  • 文件数据备份脚本

    目的:实现多层文件夹文件的检索,筛选需要的文件,完成备份路径的创建(根据时间和传参[项目名 版本名 等]),完成文件的copy,然后对备份的所有文件进行压缩

    py文件增加了3个方法:

    1.路径创建

    2.文件检索与copy

    3.文件压缩

     

    使用.bat文件带3个参数调用该py文件

      1 #! /usr/bin/env python
      2 #coding=utf-8
      3 #Edit:Sandy Zheng
      4 #date:2021/7/6
      5 
      6 import os
      7 import time
      8 import os, shutil
      9 import os.path
     10 import time
     11 from pathlib import Path
     12 import zipfile
     13 import sys
     14 
     15 Projectname=sys.argv[1]
     16 Type =sys.argv[2]
     17 VERSION=sys.argv[3]
     18 
     19 # 格式化
     20 CurrentTime = (time.strftime("%Y-%m-%d %H-%M-%S", time.localtime()))
     21 
     22 CurrentTime1 = (time.strftime("%Y %m %d %H %M %S", time.localtime()))
     23 print (CurrentTime)
     24 def mkdir(path):
     25 
     26     # 去除首位空格
     27     path = path.strip()
     28     # 去除尾部  符号
     29     path = path.rstrip("\")
     30 
     31     # 判断路径是否存在
     32     # 存在     True
     33     # 不存在   False
     34     isExists = os.path.exists(path)
     35 
     36     # 判断结果
     37     if not isExists:
     38         # 如果不存在则创建目录
     39         # 创建目录操作函数
     40         os.makedirs(path)
     41 
     42         print(path + ' 创建成功')
     43         return True
     44     else:
     45         # 如果目录存在则不创建,并提示目录已存在
     46         print(path + ' 目录已存在')
     47         return False
     48 
     49 def copy_search_file(srcDir, desDir):
     50     ls = os.listdir(srcDir)
     51     for line in ls:
     52         filePath = os.path.join(srcDir, line)
     53         if os.path.isfile(filePath):
     54             shutil.copy(filePath, desDir)
     55 
     56         if os.path.isdir(filePath) and not(filePath.endswith("ExtFlash")):
     57             ls1 = os.listdir(filePath)
     58             for line1 in ls1:
     59                 filePath2 = os.path.join(filePath,line1)
     60                 if os.path.isfile(filePath2):
     61                     mkdir(desDir+"\"+line)
     62                     shutil.copy(filePath2,desDir+"\"+line)
     63 
     64             if Path(filePath + "\ExtFlash").exists():
     65                 ls3 = os.listdir(filePath + "\ExtFlash")
     66                 for line2 in ls3:
     67                     filePath0 = os.path.join(filePath + "\ExtFlash", line2)
     68                     mkdir(filePath+"\"+line)
     69                     if os.path.isfile(filePath0):
     70                         if filePath0.endswith(".hex"):
     71                             shutil.copy(filePath0, desDir+"\"+line)
     72 
     73     if Path(srcDir+"\ExtFlash").exists():
     74         ls = os.listdir(srcDir+"\ExtFlash")
     75         for line in ls:
     76             filePath = os.path.join(srcDir+"\ExtFlash", line)
     77             if os.path.isfile(filePath):
     78                 if filePath.endswith(".hex"):
     79                     shutil.copy(filePath, desDir)
     80 
     81 def zip_ya(startdir,file_news):
     82     #startdir要压缩的文件夹路径
     83     #file_news是要压缩后压缩文件名,需要带后缀
     84     z = zipfile.ZipFile(file_news,'w',zipfile.ZIP_DEFLATED) #参数一:文件夹名
     85     for dirpath, dirnames, filenames in os.walk(startdir):
     86         fpath = dirpath.replace(startdir,'') #这一句很重要,不replace的话,就从根目录开始复制
     87         fpath = fpath and fpath + os.sep or ''#,实现当前文件夹以及包含的所有文件的压缩
     88         for filename in filenames:
     89             z.write(os.path.join(dirpath, filename),fpath+filename)
     90             print ('压缩成功')
     91     z.close()
     92 
     93 #copy_search_file("D:\test\src","D:\test\out")
     94 #zip_ya("D:\test\out","D:\test\out"+".zip")
     95 
     96 
     97 FinalPath = "D:FirmwareBackUp"+"\"+Projectname+"\"+CurrentTime+"\"+Type+VERSION
     98 print ("固件备份路径是:"+FinalPath)
     99 mkdir(FinalPath)
    100 copy_search_file(".\"+"\out" ,FinalPath)
    101 zip_ya(FinalPath,FinalPath+".zip")
    102 oldname = FinalPath+".zip"
    103 newname = Projectname+" "+CurrentTime+" "+Type+VERSION+".zip"
    104 os.rename(oldname,newname)
    105 shutil.copy(newname,".\"+"\out")
    106 shutil.move(newname,FinalPath)
  • 相关阅读:
    使用 python 实现 memcached 的启动服务脚本 rc
    iNeedle系统之国舜项目
    CentOS系统在不重启的情况下为虚拟机添加新硬盘
    Windows下常用软件工具的命令
    dpdk在虚拟机上出错处理
    Linux工具之man手册彩色页设置
    使用VIM插件ctags来阅读C代码
    Linux命令行上传文件到百度网盘
    ng-repeat 的重复问题
    python 启动简单web服务器
  • 原文地址:https://www.cnblogs.com/Sandy-1128/p/sandy1128-backup.html
Copyright © 2011-2022 走看看