Python实现备份文件实例

 更新时间:2014年09月16日 15:59:24   投稿:shichen2014  
这篇文章主要介绍了Python实现备份文件的方法,可实现针对各类常见扩展名的文件进行备份的功能,需要的朋友可以参考下

本文实例讲述了Python实现备份文件的方法,是一个非常实用的技巧。分享给大家供大家参考。具体方法如下:

该实例主要实现读取一个任务文件, 根据指定的任务参数自动备份.

任务文件的格式: (注意,分号后面注释是不支持的)

[task] ; 一项任务开始
dir=h:/Project ; 指定备份的目录
recusive=1 ; 是否递归子目录
suffix=h|cpp|hpp|c|user|filters|vcxproj|sln|css|gif|html|bmp|png|lib|dsw|dsp|htm|html|ico|ini|jpg|rc|vssscc ; 指定备份的扩展名
exclude=0 ; 指定是备份上面的参数指定的扩展名还是排除指定的扩展名
zip=Project.zip ; 备份后的文件路径名

python代码如下:

# -*- coding: utf-8 -*- 
import sys
import os
import zipfile
class Task:
 #dir str directory
 #bsub BOOL include subdirectory
 #sfx str postsuffix ,sepeated by '|'
 #ecld BOOL include or execlude the postsuffix sfx
 def __init__(self,dir,bsub,sfx,ecld,zip):
 self.dir = dir
 self.bsub = bsub
 self.suffix = sfx.split("|")
 self.exclude = ecld
 self.zip = zip
 
 @staticmethod
 def isfilter(sfx,sfxs,bexcld):
 bFound = False
 for e in sfxs:
  if e == sfx:
  bFound = True
  break 
 if bexcld:
  return not bFound;
 else:
  return bFound;
 
class QBackup:
 '''备份指定目录下具备指定扩展名的文件'''
 def __init__(self):
 self._list = []
 
 def __del__(self):
 pass
 
 #tfile 任务文件
 def ReadTask(self,tfile):
 dir = ""
 bsub = False
 sfx = ""
 becld = False
 zip = ""
 try:
  f = open(tfile,'r')
  while True:
  line = f.readline()
  if len(line) == 0:
   break;
  line = line.strip(" ")
  if "[Task]/n".lower() == line.lower():
   # 读取接下来的4行
   iline = 1
   while iline <= 5:
   line = f.readline()
   line = line.strip(" /t/n") # 去除前后的空白符 
   idx = line.find("=")
   if -1 == idx:
    break;
   atti = line[0:idx]
   value = line[idx+1:]
   print(value)
   if "dir" == atti:
    dir = value
   elif "recusive" == atti:
    bsub = bool(int(value))
   elif "suffix" == atti:
    sufix = value
   elif "exclude" == atti:
    becld = bool(int(value))
   elif "zip" == atti:
    zip = value
   else:
    break
   iline += 1
   else:
   t = Task(dir,bsub,sufix,becld,zip)
   self._list.append(t)
 except:
  return False
 return True
 
 def DoBackup(self):
 for e in self._list:
  try:
  zip = zipfile.ZipFile(e.zip,'w',zipfile.ZIP_DEFLATED)
  self.ZipDir(zip,e.dir,e.bsub,e.suffix,e.exclude)
  zip.close()
  except:
  print("exception raised!")
  return False
 return True 
 def ZipDir(self,zip,dir,bsub,sfxs,ecld):
 subdir = ""
 path = ""
 if os.path.isdir(dir):
  paths = os.listdir(dir)
  #备份本目录
  print("ZipDir: ",dir)
  for e in paths:
  path = dir + "/" + e
  ext = os.path.splitext(e)[1][1:]
  if os.path.isfile(path) and Task.isfilter(ext,sfxs,ecld):
   print ("ZipFile: ",path)
   zip.write(path)
  #清理子目录
  if bsub: 
  for e in paths:
   subdir = dir + "/" + e
   self.ZipDir(zip,subdir,bsub,sfxs,ecld)
 
 def PrintTask(self):
 for e in self._list:
  print (e.dir,e.bsub,e.suffix,e.exclude,e.zip)
 
if '__main__' == __name__:
 c = QBackup()
 c.ReadTask("bkup.txt")
 c.DoBackup()
 

希望本文所述对大家Python程序设计的学习有所帮助。

相关文章

  • python创建和删除目录的方法

    python创建和删除目录的方法

    这篇文章主要介绍了python创建和删除目录的方法,涉及Python操作目录的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 使用pickle存储数据dump 和 load实例讲解

    使用pickle存储数据dump 和 load实例讲解

    今天小编就为大家分享一篇使用pickle存储数据dump 和 load实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python数据分析之绘制ppi-cpi剪刀差图形

    Python数据分析之绘制ppi-cpi剪刀差图形

    这篇文章主要介绍了Python数据分析之绘制ppi-cpi剪刀差图形,ppi-cp剪刀差是通过这个指标可以了解当前的经济运行状况,下文更多详细内容介绍需要的小伙伴可以参考一下
    2022-05-05
  • python实现下载pop3邮件保存到本地

    python实现下载pop3邮件保存到本地

    这篇文章主要为大家详细介绍了python实现下载pop3邮件保存到本地的代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • pygame库pgu使用示例代码

    pygame库pgu使用示例代码

    pgu全称是Phil’s pyGame Utilities,是pygame的一组模块与脚本,其中还有gui集成了一些小模块,现在用pygame制作小游戏的人越来越多,但是pygame它是没有弹窗机制的,今天通过本文给大家介绍pygame库pgu使用示例代码,需要的朋友参考下吧
    2021-08-08
  • Python采集猫眼两万条数据 对《无名之辈》影评进行分析

    Python采集猫眼两万条数据 对《无名之辈》影评进行分析

    这篇文章主要给大家介绍了关于利用Python荣国采集两万条猫眼数据,对《无名之辈》影评进行分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-12-12
  • Django中的AutoField字段使用

    Django中的AutoField字段使用

    这篇文章主要介绍了Django中的AutoField字段使用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python输入二维数组方法

    Python输入二维数组方法

    下面小编就为大家分享一篇Python输入二维数组方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • pip安装指定版本的tensorflow的实现

    pip安装指定版本的tensorflow的实现

    本文介绍了如何使用pip安装指定版本的TensorFlow,包括CPU版本和GPU版本的安装方法,同时,文中也提到了使用阿里国内镜像源加速下载的方法,以及在安装GPU版本时需要检查CUDA和cuDNN的兼容性的注意事项,感兴趣的可以了解一下
    2024-10-10
  • 使用Python调取任意数字资产钱包余额功能

    使用Python调取任意数字资产钱包余额功能

    那资产放在钱包的时候,如何来监控余额呢?任何数字资产都可以使用区块浏览器来查询余额,那我们只要从此着手,用Python调取区块浏览器,来查询余额就能实现所有资产的余额监控,感兴趣的朋友跟随小编一起看看吧
    2019-08-08

最新评论