博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python入门-简单的文件备份程序
阅读量:7211 次
发布时间:2019-06-29

本文共 2517 字,大约阅读时间需要 8 分钟。

由于备份的需要,需要经常备份一些重要的文件,但是又不能逐个比较,所以就度了一下,找到了,在此表示感谢,下面是python3版的写法,其中有一些改变,重要的改变之处作出了简要注释,完整注释请参考原文,

重要:下面代码未经充分测试,在备份自己文件之前,请充分测试,如有疏漏之处,欢迎留言,一起学习

注意:注意路径的分割斜杠,在这里是斜杠/而非反斜杠\

md5校验选择备份

1 # -*- coding: utf-8 -*- 2  3  4 import hashlib 5 import os 6 import shutil 7  8  9 def md5check(fname):10     m = hashlib.md5()11     with open(fname, 'rb') as f: # 这里文件的打开方式与原文不同,由于在备份我的文件时出现了编码问题,所以进行了修改,以二进制方式打开12         while True:13             data = f.read(4096)14             if not data:15                 break16             m.update(data)17     return m.hexdigest()18 19 20 21 22 # 文件复制函数23 def copy(path):24     new_path = path25     new_path = new_path.replace(old_source, new_source)26     print(new_path)27     if os.path.isfile(new_path):28         old_md5 = md5check(path)29         new_md5 = md5check(new_path)30         if old_md5 != new_md5:31             shutil.copy(path, new_path)32     else:33         dirname = os.path.dirname(new_path)34         if os.path.exists(dirname): # 如果目录存在,直接复制文件到new_path35             shutil.copy(path, new_path)36         else: # 如果目录不存在,则直接创建目录并复制文件37             try:38                 os.makedirs(dirname)39                 shutil.copy(path, new_path)40             except WindowsError:41                 print('创建目录出错')42 43 # 查找所有目录文件的递归函数44 def lsdir(folders):45     path = os.listdir(folders)46     for line in path:47         line = folders + '/' + line48         if(os.path.isdir(line)):49             lsdir(line)50         else:51             copy(line)52 53 54 55 56 57 58 59 if __name__ == '__main__':60     global old_source61     global new_source62     print('例子:d:/directory,请输入要备份的目录所在地址、以及目标地址:')63     old_source = 'C:/Users/xxxx/AppData/Local/Google/Chrome/User Data/Default/Local Storage/leveldb'64     new_source = 'D:/leveldb' # 此处不知道只传入盘符会发生什么,建议不要这么做,未经测试65     lsdir(old_source)66

完全备份

# -*- coding: utf-8 -*-# 脚本功能:删除new_path目录,然后复制original_path到new_path目录,注意两目录的名称要一样,初衷:用于名称变化的需要备份的文件# 基于python3import osimport shutil# 不校验直接删除已备份文件,再重新备份源文件def non_checkout_backup(original_path, new_path):    if os.path.exists(new_path):        shutil.rmtree(new_path) # shutil.rmtree空目录、有内容的目录都可以删,但是必须要存在,否则报错, 而os.rmdir只能删除空目录    shutil.copytree(original_path, new_path) # original_path、new_path都只能是目录if __name__ == '__main__':    original_path = 'C:/Users/xxxx/AppData/Local/Google/Chrome/User Data/Default/Local Storage/leveldb'    new_path = 'D:/leveldb'    non_checkout_backup(original_path, new_path)

 

转载于:https://www.cnblogs.com/xia-Autumn/p/8295327.html

你可能感兴趣的文章
python 练习-登录接口
查看>>
数据库9:联结表 高级联结 组合查询 全文本搜索
查看>>
EBank 电子银行发布 2.1.0 版本
查看>>
vue.js实现原理 -- 订阅者,发布者模式
查看>>
iOS应用签名(下)
查看>>
深入学习Activity生命周期
查看>>
redis:Sentinel高可用方案
查看>>
4月中国域名服务商TOP20市场份额解析(图)
查看>>
Linux 系统故障排除
查看>>
Apache服务全攻略之常规配置
查看>>
大对数电缆色谱线序表
查看>>
怎么提高Storm的并发度?
查看>>
我的友情链接
查看>>
java生产者消费者问题(线程同步与线程等待的应用)
查看>>
openstack-mitaka安装文档-Compute服务安装
查看>>
在JavaScript中释放变量
查看>>
使用JDBC向SQL Server中传递表类型参数
查看>>
android animation
查看>>
自动扫描Properties文件配置的简单实现
查看>>
Java agent技术原理文档
查看>>