我正在编写一个python 2.7脚本来比较从all_current_files
返回的列表中的最新(2)文件,这列出了目录中的所有文件名,例如: myimage.jpg, myimage1.jpg, etc.
例如,如果我的列表如下:
1 myfile1.jpg
2 myfile2.jpg
3 myfile3.jpg
4 myfile4.jpg
5 myfile5.jpg
6 myfile6.jpg
定义为list = ['myfile1.jpg','myfile2']
等。
如果文件6
和5
的哈希值之间的差异 10 ,则脚本将不执行任何操作,如果它小于 5 < / em>,它会删除它。
我在制定如何以递归方式(从结尾开始)比较列表中的最后2个元素时遇到问题,直到比较所有列表项 - 有人可以帮忙吗?
我目前有:
def purgeDups():
print "purging duplicate images every hour...\n\n"
all_current_files = os.listdir('filllll...in...image...dir...here')
for file in all_current_files:
#check latest file... and compare to second latest file based on timestamp of file, recurse until no more files.
#begin comparing files...if difference between latest all_current_files and second latest is less than 5, delete
latest = imagehash.average_hash(Image.open(<<latestfilefrom2linesabove>>))
secLatest = imagehash.average_hash(Image.open(<<secondlatestfrom2linesabove>>))
compare = latest-secLatest
if int(compare) < 5:
os.remove(<<latestfilefrom2linesabove>>)
os.remove(<<secondlatestfilefrom2linesabove>>)
非常感谢。
答案 0 :(得分:0)
这里不需要递归。如果你想比较所有可能的对,我建议你使用嵌套循环,如下所示:
for f1 in os.listdir('.'):
for f2 in os.listdir('.'):
if f1 == f2 or not os.path.exists(f1) or not os.path.exists(f2): # don't compare the same file, or files that have already been deleted
continue
... # file comparison code here