# -*- coding: utf-8 -*-
#!/usr/bin/python
from hashlib import md5
import os
def calMD5(str):
m = md5()
m.update(str)
return m.hexdigest()
def calMD5ForFile(file):
statinfo = os.stat(file)
if int(statinfo.st_size) / (1024*1024) >= 1000:
# print("File size > 1000, move to big file...")
return calMD5ForBigFile(file)
m = md5()
f = open(file, 'rb')
m.update(f.read())
f.close()
return m.hexdigest()
def calMD5ForFolder(dir, MD5File):
outfile = open(MD5File,'w')
for root, subdirs, files in os.walk(dir):
for file in files:
filefullpath = os.path.join(root, file)
"""print filefullpath"""
filerelpath = os.path.relpath(filefullpath, dir)
md5 = calMD5ForFile(filefullpath)
outfile.write(filerelpath+' '+md5+"\n")
outfile.close()
def calMD5ForBigFile(file):
m = md5()
f = open(file, 'rb')
buffer = 8192 # why is 8192 | 8192 is fast than 2048
while 1:
chunk = f.read(buffer)
if not chunk : break
m.update(chunk)
f.close()
return m.hexdigest()
if __name__=="__main__":
print(calMD5ForFile("e:/test/target/a/b/rabbit.txt"))
# -*- coding: utf-8 -*-
#!/usr/bin/python
import os,shutil
from md5_caculate import calMD5ForFile
# 拷贝源目录到目标目录
def copyDir(srcDir, dstDir):
if srcDir in dstDir: # 源目录包含在目标目录,则直接返回
return
if not os.path.isdir(srcDir):
print(srcDir, "路径指定的源目录不存在!")
return;
if not os.path.exists(dstDir): # 目标目录不存在时则创建
os.makedirs(dstDir)
for fileOrDirName in os.listdir(srcDir): # 源目录下的所有文件(包括文件和目录) TODO BUG:如果srcDir为一个空目录?
# fileOrDirPath = srcDir + "/" + fileOrDirName
fileOrDirPath = os.path.join(srcDir, fileOrDirName)
if os.path.isfile(fileOrDirPath): # 如果当前是一个子文件,则直接复制文件
copyFile(fileOrDirPath, dstDir)
if os.path.isdir(fileOrDirPath): # 如果当前是一个子目录,则递归复制目录
copyDir(fileOrDirPath, os.path.join(dstDir, fileOrDirName))
# 拷贝源文件到目标目录
def copyFile(srcFile, dstDir):
if not os.path.isfile(srcFile):
print(srcFile, "路径指定的源文件不存在!")
return
fileName = os.path.basename(srcFile)
dstFile = os.path.join(dstDir, fileName)
if os.path.isfile(dstFile): # 有同名的目标文件,则检查MD5值是否相同,如果不同才Copy
if calMD5ForFile(srcFile) != calMD5ForFile(dstFile):
try:
shutil.copy(srcFile, dstDir)
except PermissionError:
print("PermissionError occurs: ", srcFile)
else:
shutil.copy(srcFile, dstDir)
if __name__=="__main__":
copyDir("e:/test/src", "e:/test/target")
# -*- coding: utf-8 -*-
#!/usr/bin/python
import os, time
from file_util import copyDir
# -------------------------------------------------------------
# 定时备份源目录到目标目录
# version = 1.0
# author = Will
# -------------------------------------------------------------
# 定时备份源目录到目标目录,sleepIntervalSeconds为备份时间间隔秒数
def backupDir(srcDir, dstDir, sleepIntervalSeconds):
if not os.path.isdir(srcDir):
print("请指定要备份源目录并确保目录存在!")
return;
while True:
print("备份:", srcDir, ",到:", dstDir)
copyDir(srcDir, dstDir)
print("开始休眠", sleepIntervalSeconds, "秒...")
time.sleep(sleepIntervalSeconds)
if __name__=="__main__":
backupDir("d:/Documents/workspace/workspace/griddle", "e:/backup/griddle", 20)
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有