1. 程式人生 > 其它 >py讀shp檔案_使用hashlib模組來實現對檔案MD5的校驗

py讀shp檔案_使用hashlib模組來實現對檔案MD5的校驗

技術標籤:py讀shp檔案

1、準備材料

ubuntu-12.04-server-amd64.iso

a37d8026fc9af8e91c60e8f5c1ee290c.png
醉紅塵

首先借助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