zoukankan      html  css  js  c++  java
  • 利用os、hash模块生成目录下所有文件的md5

    hashlib用于对字符串或者文件进行加密。
    使用方法1:
      hashlib.md5('str').hexdigest()  
      使用MD5对str进行加密,使用hexdigest(),16进制的方式打印
     
    使用方法2:
      md5 = hashlib.md5()
      md5.update('hello')
        如果第一次执行update,那么就是对hello这个字符串进行MD5加密(注意,这里是累加,如果多次update,那么求得是累加的md5值)
      md5.hexdigest()
        把md5对象保存的str,以16进制进行显示
     
    os.walk(path)迭代一个路径下的文件,默认返回三个参数的元祖
      ('相对路径',[路径下的目录],[路径下的文件名])
      第一个元素为str,后面两个元素为list
      注意:os.walk,是会对路径下的目录进行递归的。
     
     
    对目录下的所有文件生成md5值,功能类似于: find /path  -type f   -exec md5sum {} ;
     1 #!/usr/bin/env python
     2 
     3 import os
     4 import sys
     5 import hashlib
     6 
     7 try:
     8     dirpath = sys.argv[1]
     9 except IndexError as e:
    10     sys.exit('need one dirctory')
    11 if os.path.isfile(dirpath):
    12    sys.exit('Please input a directory')
    13 
    14 pathobj = os.walk(dirpath)
    15 
    16 def md5sum(f):
    17     m = hashlib.md5()
    18     with open(f) as fd:
    19         while True:
    20             data = fd.read(4096)    #每次读取一部分,避免因为文件过大,造成对内存的压力
    21             if data:
    22                 m.update(data)
    23             else:
    24                 break
    25     return m.hexdigest()
    26 
    27 for roots,dirs,files in pathobj:
    28     for file in files:
    29         filename =  os.path.join(roots,file)
    30         md5 = md5sum(filename)
    31         print md5,filename
     
  • 相关阅读:
    代码走读 airflow 2
    sql 查询相关
    控制你的鼠标和键盘
    TODO
    二进制流的操作收集
    daterangepicker-双日历
    datetimepicker使用
    ADO执行事务
    动态添加表sql
    执行带返回值的存储过程
  • 原文地址:https://www.cnblogs.com/dachenzi/p/6793912.html
Copyright © 2011-2022 走看看