一、简介:
1.实现本地定时备份,备份文件夹产生按照时间排序的迭代文件夹;
2.第一次备份将源文件夹内所有文件备份至备份文件夹,后面只备份发生内容变更的文件;
3.不具备子文件夹备份功能,只备份文件;
4.word的临时文件可以备份,但不保证所有程序都给予临时文件的读权力,因此做了无法读取跳过的设计,所以未保存及关闭的文件可能无法备份;
5.进程内存的实时显示;
6.使用了多线程(伪);
7.因无全面的测试,建议只备份文档、图片等不复杂的文件;
8.有一实时删除备份文件夹内空文件夹的线程,但做了保守设置,结束时可能会对最后1-2个空文件夹进行留存;
9.有文件夹复制时进度条;
10.有倒计时进度条;
11.保守设计,定时全部为0也有1s延时;
12.有完整log;
13.半透明界面。
界面:
log:
二、部分源码:
1.轮子……:
import os,signal,psutil#读取文件夹等 杀死进程 内存占用import shutil#复制文件import datetimeimport timeimport hashlib#哈希验证from tkinter import *#UI需要import threading#多线程from tkinter import filedialog#选择路径需要import tkinter.font as tkFont#字体设置import tkinter.ttk#进度条需要
2.多线程、死循环跳出及杀进程退出:
#多线程t1 = threading.Thread(target=lambda:[first()],daemon=True)#守护线程daemon=True 线程1t2 = threading.Thread(target=lambda:[stop()],daemon=True) #守护线程daemon=True 线程2t3 = threading.Thread(target=lambda:[clear()],daemon=True)#守护线程daemon=True 线程3def t1st():t1.start()def t3st():t3.start()def t2st():t2.start()def stop():varF_0.set('9')#设置变量为9time.sleep(1)#等待1sos.kill(os.getpid(), signal.SIGINT)#杀死进程.............................while 1 == 1:if varF_0.get()== '1':progressbarthree['maximum'] = time1-1 # 进度值最大值progressbarthree['value'] = time1-1 # 进度值初始值for p in range(int(time1)):time.sleep(1)progressbarthree['value'] -= 1 # 进度条-1window.update()second(dictA, dst_dir, src_dir, dirs_1)else:time.sleep(1)break
