读取文件并在python中获取MD5哈希

时间:2016-05-19 15:04:24

标签: python

循环正在运行但是一旦我把if语句放在其中只打印I am a dir

如果if语句不存在,我可以将dirpath, dirname, filename打印到控制台

我正在尝试列出目录中的所有文件名并获得MD5总和。

from os import walk
import hashlib
import os
path = "/home/Desktop/myfile"

for (dirpath, dirname, filename) in walk(path):

    if os.path.isdir(dirpath):
        print("I am a dir")
    if os.path.isfile(dirpath):
        print(filename, hashlib.md5(open(filename, 'rb').read()).digest())

2 个答案:

答案 0 :(得分:1)

您只需查看dirpath。您拥有的dirnamefilename实际上是dirpath下目录名称和文件的集合。取自python docs,并略微修改,因为他们的示例删除了文件:

import os
for root, dirs, files in os.walk(top):
    for name in files:
        print(os.path.join(root, name))
    for name in dirs:
        print(os.path.join(root, name))

将打印top下的目录和文件列表,然后递归top下的目录并打印那里的文件夹和目录。

答案 1 :(得分:1)

关于os.walk的Python文档:

https://docs.python.org/2/library/os.html

  

dirpath是一个字符串,即目录的路径。 dirnames是一个列表   dirpath中子目录的名称(不包括'。'和' ..')。   filenames是非目录文件名称的列表   dirpath。

使用<Image> <Image.Source> <BitmapImage UriSource="{Binding ImageSource}" /> </Image.Source> </Image> ,您正在检查os.path.isfile(dirpath)是否为文件,但情况绝对不是这样。尝试将代码更改为:

dirpath