我有一个文件夹,里面有 78 张 jpeg 图片,其中只有 48 张是唯一的。我想用 Python 遍历这个文件夹中的文件,并让它打印出每个文件名的列表,只要图像不是重复的。
更具体地说,它将打印出一个数组,我可以将其复制并粘贴到 PHP 脚本中以供使用。
我的想法是,当我遍历文件时,将文件源的 md5 保存到一个数组中。但是,如果哈希值已经在数组中,它将忽略该文件并继续前进。
这是我的脚本:
from os import listdir
from os import path
from hashlib import md5
m = md5()
hashes = []
d = path.join("Z:\\mydir")
files = listdir(d);
i = 1;
print " array("
for file in files:
src = "Z:\\mydir\\%s" % file
src = open(src)
src = src.read()
m.update(src)
hash = m.digest()
if(hash not in hashes):
hashes.append(hash)
if(i == len(files)):
print "\"%s\"" % file
else:
print "\"%s\"," % file
i += 1
print ");"
这是打印出每张图片!
我认为这个问题可能是因为 jpeg 文件开头的元数据,所以我试图只阅读源代码的后半部分:
halfsrclen = len(src) / 2
m.update(src[halfsrclen:])
hash = m.digest()
但这仍然是返回每个文件!
我可能做错了什么,但我不知道是什么:(