py讀shp檔案_使用hashlib模組來實現對檔案MD5的校驗
阿新 • • 發佈:2021-01-03
技術標籤:py讀shp檔案
1、準備材料
ubuntu-12.04-server-amd64.iso
首先借助Windows的命令來檢視一下該檔案的MD5碼
C:UsersAdministrator>certutil -hashfile C:UsersAdministratorDesktopubuntu-12.04-server-amd64.iso MD5 MD5 的 C:UsersAdministratorDesktopubuntu-12.04-server-amd64.iso 雜湊: f2e921788d35bbdf0336d05d228136eb CertUtil: -hashfile 命令成功完成。
該檔案的MD5碼為:f2e921788d35bbdf0336d05d228136eb
2、通過hashlib模組來實現
#!/usr/bin/env python #-*- coding:utf-8 -*- import hashlib import sys import os def check_md5(): if sys.argv[1]: if os.path.exists(sys.argv[1]): m = hashlib.md5() with open(sys.argv[1],mode='rb') as f: for line in f: m.update(line) print(m.hexdigest()) else: print('路徑不存在!') else: print('缺少引數!') if __name__ == '__main__': check_md5()
3、程式執行結果
[[email protected] 作業]# python check_m.py /practice/day23/ubuntu-12.04-server-amd64.iso
f2e921788d35bbdf0336d05d228136eb
可以看到實現了對檔案的校驗
但是,我們現在比較的檔案僅僅是600多M,如果一個檔案是成百G,那麼將耗費大量的時間,在等待檔案的讀取
有沒有什麼好的IDEA了
那麼進階版本來了
4、進階版
#!/usr/bin/env python #-*- coding:utf-8 -*- import os import sys import hashlib def check_large_file_md5(): if sys.argv[1]: if os.path.exists(sys.argv[1]): m = hashlib.md5() with open(sys.argv[1],mode='rb') as f: for i in range(4): m.update(f.read(204800)) f.seek(10240000,1) print(m.hexdigest()) else: print('路徑錯誤!') else: print('引數錯誤!') if __name__ == '__main__': check_large_file_md5()
思路是:
把一個檔案分為幾塊,讀一段,檔案再指標移動一段距離
效果:
[[email protected] 作業]# python check_large_file.py /practice/day23/ubuntu-12.04-server-amd64.iso
95111599fadb55e4933d3989ddcd5aa7
[[email protected] 作業]# vim check_large_file.py