python - 为每个文件名生成新的 MD5 哈希值

标签 python python-3.x md5 os.walk hashlib

VS = hashlib.md5() 中仅重复一个哈希

如何为 for 循环中的每个文件创建新的哈希值?

import os
import hashlib

VS = hashlib.md5()    
rootDir = r"C:\Users\Ghost\Pictures\Wallpaper"

for dirName, subdirList, fileList in os.walk(rootDir, topdown=True):
    print('Directory:', dirName)
    for x in fileList:
        print('Filename: ' , x, '\t', VS.hexdigest())

输出:

Directory: C:\Users\Ghost\Pictures\Wallpaper
Filename:  0020.jpg      d41d8cd98f00b204e9800998ecf8427e
Filename:  2215.jpg      d41d8cd98f00b204e9800998ecf8427e
Filename:  55845.jpg     d41d8cd98f00b204e9800998ecf8427e
Filename:  anon.jpg      d41d8cd98f00b204e9800998ecf8427e
Filename:  Eyes_HD.jpg   d41d8cd98f00b204e9800998ecf8427e
Filename:  gow.jpg       d41d8cd98f00b204e9800998ecf8427e
Filename:  kk.png        d41d8cd98f00b204e9800998ecf8427e
Filename:  scanEQ.txt    d41d8cd98f00b204e9800998ecf8427e
Filename:  scanEQQ.txt   d41d8cd98f00b204e9800998ecf8427e
Filename:  scooby.jpg    d41d8cd98f00b204e9800998ecf8427e
Filename:  skull.jpg     d41d8cd98f00b204e9800998ecf8427e
Filename:  sniper.jpg    d41d8cd98f00b204e9800998ecf8427e

最佳答案

我想我有一个像这样的目录:

test
├── callfoo.py
├── folder
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-35.pyc
│   │   └── submodule.cpython-35.pyc
│   └── submodule.py
└── inherit.py

2 directories, 6 files

你可以这样做:

import os
import hashlib

def md5_checksum(path, size=1024):
    VS = hashlib.md5()
    with open(path, 'rb') as f:
        for chunk in iter(lambda: f.read(size), b''):
            VS.update(chunk)
    return VS.hexdigest()


rootDir = r"/home/nexus/Bureau/stack/test"
size = 1024

for dirName, subdirList, fileList in os.walk(rootDir, topdown=True):
    for _file in fileList:
        path = dirName + '/' + _file
        checksum = md5_checksum(path, size)
        print('File: {0} \t {1}'.format(_file, checksum))

输出:

File: callfoo.py     52cf7effa72135d50d8389bc81c73672
File: inherit.py     919a85d8976d67eea97562a4f8a7e2b9
File: submodule.py   3be5b4123199df6a01b368f2f343821c
File: __init__.py    d41d8cd98f00b204e9800998ecf8427e
File: __init__.cpython-35.pyc    2e4511c482f711fe68bdc825ce658375
File: submodule.cpython-35.pyc   f93d319156617e2cfca3cee88edfcc2a

关于python - 为每个文件名生成新的 MD5 哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48129929/

相关文章:

python - django 模型类 __init__ 中的 keyerror

python-3.x - 用于 Python 3.6 的 cx_Oracle

php - 查询具有 md5 版本 id 的字段

Python:使用列表列表进行列表理解

python - Python 3 中 slimmer 的替代品是什么?

java - 我应该在哪里直接(通过查询)或通过前端的函数在数据库列中使用 MD5 哈希?

cryptography - 使用哈希函数的前 N ​​位得到 N 位哈希

python - 如何使用 Django 连接

python - 如何构建程序以使用扫雷艇配置

Python 刽子手算法