本文实例讲述了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实现备份文件实例相关推荐

  1. python爬虫requests简单案例_Python小例子:一个最简单的爬虫

    学习编程的过程中总是有些枯燥.成天面对黑乎乎的窗口可能真的有些无聊.来,我们做点好玩的事情吧.比如 将网络上你喜欢的图片保存下来.不过千里之行 始于足下,在学习将网页上的图片下载下来之前.我们首先要学 ...

  2. python爬虫requests简单案例_python网络爬虫(三)requests库的13个控制访问参数及简单案例...

    酱酱~小编又来啦~

  3. python中continue用法案例_Python continue语句实例用法

    Python continue语句: 当执行到 continue 语句时,将不再执行本次循环中 continue 语句接下来的部分,而是继续下一次循环. lst = [7,8,9,4,5,6] for ...

  4. python有什么简单项目_python有什么简单项目适合初学者?

    python有什么简单项目适合初学者?下面我将介绍几个简单的Python小项目,便于大家学习提升自己的Python开发水平.感兴趣的朋友一起来了解一下吧. 适合初学者学习的项目: 实例一:满分推荐,非 ...

  5. python用于数据分析的案例_Python数据分析经典案例

    从事机器学习,数据分析,数据挖掘的同学们以及python使用者 选择经典案例基于真实数据集,从数据预处理开始到建立机器学习模型以及效果评估,完整的讲解如何使用python及其常用库进行数据的分析和模型 ...

  6. python解析json文件案例_Python加载带有注释的Json文件实例

    由于json文件不支持注释,所以如果在json文件中标记了注释,则使用python中的json.dump()无法加载该json文件. 本文旨在解决当定义"//"为json注释时,如 ...

  7. python多元线性回归模型案例_Python 实战多元线性回归模型,附带原理+代码

    原标题:Python 实战多元线性回归模型,附带原理+代码 作者 | 萝卜 来源 | 早起Python( ID:zaoqi-python ) 「多元线性回归模型」非常常见,是大多数人入门机器学习的第一 ...

  8. python多分支结构案例_python的程序控制结构-分支结构与身体质量指数案例--python-6-da...

    python的程序控制结构-分支结构与身体质量指数案例--python-6-da python的程序控制结构-分支结构与身体质量指数案例--python-6-days 程序控制结构 - 单分支 if ...

  9. python网页爬虫漫画案例_Python爬虫案例:js解密 爬取漫画

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于Python爬虫案例,作者麦自香 转载地址 https://blo ...

最新文章

  1. 第五次作业:四则运算之升级
  2. Java怎么定义图片公共路径_【Java】springboot配置图片访问路径
  3. 3年5000家,苏宁小店如何立足“中国第一O2O社区小店”?
  4. 《不留》--王菲 Faye
  5. 2014江苏省职称计算机,2014年江苏省职称计算机office多选题.doc
  6. bloc+rxdart解决代码混乱大问题
  7. 周学习进度----03
  8. 准备-上机考试-华为
  9. python 批量打印文档_使用python将Excel数据填充Word模板并生成Word
  10. 利用正则表达式限制网页表单里的文本框输入内容
  11. java私塾设计模式_Java私塾:研磨设计模式 之 访问者模式(Visitor)
  12. 简易网站流量统计工具
  13. 顶级赛事!2021 CCF大数据与计算智能大赛重磅开赛!
  14. 大量的Oracle数据库视频教程提供下载
  15. 一文带你读懂“TRIZ”
  16. Afterlogic xmail 邮局软件不能收email 设置
  17. mysql用户的创建、修改、删除与密码修改
  18. 清除盗游戏帐号的密西木马变种(Trojan.PSW.Misc.r)等
  19. Open vSwitch + VLAN 组网
  20. 计算机技术及其关系,计算机技术和自动化的关系.doc

热门文章

  1. nginx ---- nginx服务器版本升级和新增模块
  2. python中的sklearn.svm.svr_python机器学习库scikit-learn:SVR的基本应用
  3. 打开终端输入没反应_忘掉Iterm2,试试这款跨平台终端工具
  4. excel小写转大写公式_喂!这边居然有演示的Excel快捷键!
  5. 4比较三个数的大小输出最大的值并从小到大排序输出
  6. JAVA 不足N位后面补XX符号
  7. git如何查看和切换账号
  8. mysql服务器cpu资源占用满
  9. Linux压缩文件与解压文件(*.zip)
  10. Android开发笔记(一百三十三)导航视图NavigationView