循环遍历目录中的文件,并比较最新的2个文件是否有重复项

时间:2017-07-09 00:55:58

标签: python python-2.7 list recursion

我正在编写一个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']等。

如果文件65的哈希值之间的差异 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>>)

非常感谢。

1 个答案:

答案 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