循环正在运行但是一旦我把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())
答案 0 :(得分:1)
您只需查看dirpath
。您拥有的dirname
和filename
实际上是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