python入门-简单的文件备份程序
2018-01-16 10:38
453 查看
由于备份的需要,需要经常备份一些重要的文件,但是又不能逐个比较,所以就度了一下,找到了这篇博文,在此表示感谢,下面是python3版的写法,其中有一些改变,重要的改变之处作出了简要注释,完整注释请参考原文,
重要:下面代码未经充分测试,在备份自己文件之前,请充分测试,如有疏漏之处,欢迎留言,一起学习
注意:注意路径的分割斜杠,在这里是斜杠/而非反斜杠\
md5校验选择备份
完全备份
重要:下面代码未经充分测试,在备份自己文件之前,请充分测试,如有疏漏之处,欢迎留言,一起学习
注意:注意路径的分割斜杠,在这里是斜杠/而非反斜杠\
md5校验选择备份
# -*- coding: utf-8 -*- import hashlib import os import shutil def md5check(fname): m = hashlib.md5() with open(fname, 'rb') as f: # 这里文件的打开方式与原文不同,由于在备份我的文件时出现了编码问题,所以进行了修改,以二进制方式打开 while True: data = f.read(4096) if not data: break m.update(data) return m.hexdigest() # 文件复制函数 def copy(path): new_path = path new_path = new_path.replace(old_source, new_source) print(new_path) if os.path.isfile(new_path): old_md5 = md5check(path) new_md5 = md5check(new_path) if old_md5 != new_md5: shutil.copy(path, new_path) else: dirname = os.path.dirname(new_path) if os.path.exists(dirname): # 如果目录存在,直接复制文件到new_path shutil.copy(path, new_path) else: # 如果目录不存在,则直接创建目录并复制文件 try: os.makedirs(dirname) shutil.copy(path, new_path) except WindowsError: print('创建目录出错') # 查找所有目录文件的递归函数 def lsdir(folders): path = os.listdir(folders) for line in path: line = folders + '/' + line if(os.path.isdir(line)): lsdir(line) else: copy(line) if __name__ == '__main__': global old_source global new_source print('例子:d:/directory,请输入要备份的目录所在地址、以及目标地址:') old_source = 'C:/Users/xxxx/AppData/Local/Google/Chrome/User Data/Default/Local Storage/leveldb' new_source = 'D:/leveldb' # 此处不知道只传入盘符会发生什么,建议不要这么做,未经测试 lsdir(old_source)
完全备份
# -*- coding: utf-8 -*- # 脚本功能:删除new_path目录,然后复制original_path到new_path目录,注意两目录的名称要一样,初衷:用于名称变化的需要备份的文件 # 基于python3 import os import 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)
相关文章推荐
- python程序:备份MS SQL数据库到压缩文件
- BizTalk 2006 简单入门示例程序 Version 2.0(附源项目文件下载)
- Python绘制PDF文件~超简单的小程序
- Python绘制PDF文件~超简单的小程序
- Python实现简单的文件传输与MySQL备份的脚本分享
- python下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- python_实例: 文件备份程序
- 在windows环境下用python编写备份文件小程序
- Python 简单爬虫程序 以及 urllib.urlretrieve()方法 改变文件存放文件位置
- 使用C语言扩展Python程序的简单入门指引
- 一段备份文件的python程序(1)
- 简单的文件同步备份程序,仅支持单向同步_程序及源代码
- 使用Python编写的文件备份程序
- Python入门小练习-001-备份文件
- 一个简单的根据行数对大文件进行分片的python程序
- Python实现简单的文件传输与MySQL备份的脚本分享
- Python写的一个简单的备份程序
- python小程序:备份文件
- 第一个python程序:备份文件
- Python绘制PDF文件~超简单的小程序