有一次想使用百度网盘自带的Windows客户端上传一些大量音乐文件,这些音乐文件其他百度网盘用户肯定早都上传过,所以基本这些文件不会占用太多网络上传带宽,但是百度网盘自带的Windows客户端计算文件的md5过程非常慢,估计是为了避免计算md5过程影响电脑整体性能,所以故意没有开全速计算,后来利用BaiduPCS命令行工具进行上传,所以写了一个Python代码进行md5计算,计算过程可以达到磁盘的峰值速度。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# -*- coding: utf-8 -*- import os import io import hashlib def GetFileMD5(path, iFileSize): slicemd5 = None md5 = None with open(path, 'rb') as f: slicemd5 = hashlib.md5(f.read(min(iFileSize, 262144))).hexdigest() f.seek(0, io.SEEK_SET) md5 = hashlib.md5(f.read()).hexdigest() return md5, slicemd5 def traversal_files(path): for dir in os.listdir(path): dir = os.path.join(path, dir) if os.path.isdir(dir): traversal_files(dir) else: iFileSize = os.path.getsize(dir) md5, slicemd5 = GetFileMD5(dir, iFileSize) strPath = dir[2:] strPath = strPath.replace('\\', '/') print('./BaiduPCS-Go rapidupload -length=%d -md5=%s -slicemd5=%s "%s"' % (iFileSize, md5, slicemd5, strPath), file=open("./output.txt", "a")) if __name__ == '__main__': traversal_files("G:\\part1") |