• 利用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
     
  • 相关阅读:
    【NX二次开发】Block UI 多行字符串
    【NX二次开发】Block UI 字符串
    【NX二次开发】Block UI 枚举
    【NX二次开发】Block UI 切换开关
    Css
    禁止多行文本框textarea拖拽
    HTML5+Css3-webkit-filter
    Google Chrome一些小技巧
    js获取节点
    getAttribute:取得属性; setAttribute:设置属性。
  • 原文地址:https://www.cnblogs.com/dachenzi/p/6793912.html
Copyright © 2020-2023  润新知