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实现excel转sqlite的方法

    Python实现excel转sqlite的方法

    这篇文章主要介绍了Python实现excel转sqlite的方法,结合实例形式分析了Python基于第三方库xlrd读取Excel文件及写入sqlite的相关操作技巧,需要的朋友可以参考下
    2017-07-07
  • Python实现拉格朗日插值法的示例详解

    Python实现拉格朗日插值法的示例详解

    插值法是一种数学方法,用于在已知数据点(离散数据)之间插入数据,以生成连续的函数曲线,而格朗日插值法是一种多项式插值法。本文就来用Python实现拉格朗日插值法,希望对大家有所帮助
    2023-02-02
  • python将中文数字转化成阿拉伯数字的简单方法

    python将中文数字转化成阿拉伯数字的简单方法

    这篇文章主要给大家介绍了关于python如何将中文数字转化成阿拉伯数字的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • python,pycharm的环境变量设置方式

    python,pycharm的环境变量设置方式

    这篇文章主要介绍了python,pycharm的环境变量设置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • python神经网络Inception ResnetV2模型复现详解

    python神经网络Inception ResnetV2模型复现详解

    这篇文章主要为大家介绍了python神经网络Inception ResnetV2模型复现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Python批量查询关键词微信指数实例方法

    Python批量查询关键词微信指数实例方法

    在本篇文章中小编给大家整理的是关于Python批量查询关键词微信指数实例方法以及相关代码,需要的朋友们可以跟着学习下。
    2019-06-06
  • python将天气预报可视化

    python将天气预报可视化

    大家好,本篇文章主要讲的是python将天气预报可视化,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • Python实战之设计一个多功能办公小工具

    Python实战之设计一个多功能办公小工具

    这篇文章主要介绍了通过Python制作一个多功能的办公小工具,可以实现应用、网页直达以及天气查询,代码具有一定学习价值,需要的小伙伴可以了解一下
    2021-12-12
  • PyCharm 设置数据库,查询数据库语句方式

    PyCharm 设置数据库,查询数据库语句方式

    这篇文章主要介绍了PyCharm 设置数据库,查询数据库语句方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 关于python基础数据类型bytes进制转换

    关于python基础数据类型bytes进制转换

    Python 3.x之后,Python自带字符默认使用utf-8格式编码和显示,bytes数据类型是utf-8格式的二进制形式的不可变序列,需要的朋友可以参考下
    2023-05-05

最新评论