【问题标题】:Find duplicate files with different extensions using python使用python查找具有不同扩展名的重复文件
【发布时间】:2017-06-12 18:56:59
【问题描述】:

解决方案请参阅此评论底部的编辑。

问题:我有一个包含一堆图像的目录,命名如下:

  • image001.nef
  • image002.nef
  • image003.nef
  • image003 - 20170609.jpg
  • image004.nef
  • image005.nef
  • image006 - 20170609.nef
  • image007.nef
  • image007 - 20170609.jpg
  • image008.jpg
  • image008 - 20170609.nef

我想查找所有具有重复基本名称(如 imageXXX)且扩展名为 JPG 的图像

所以从我上面的列表中,只有三个符合删除条件的项目(我有 bold 这些项目)。

我有 2,500 张图片,所以我需要一种 Python 的方式手动浏览。

我很难找到要使用的示例脚本,我发现的所有脚本都在检查 HASH 或其他东西,我认为这没有用,因为图像确实相似,但不完全相同。

干杯

编辑: 感谢 dawg,我能够得到我想要的输出......这是对我有用的最终代码:

import os

directory = r'C:\temp'
out_directory = r'C:\temp\temp_usa_photos'
fns = os.listdir(directory)


ref_nef = {fn[0:15] for fn in fns if fn.upper().endswith('.NEF')}

print ref_nef

out_list = filter(lambda e: e[0:15] in ref_nef, [fn for fn in fns if fn.upper().endswith('.JPG')])

print out_list

for f in out_list:
    input_file = os.path.join(directory, f)
    output_file = os.path.join(out_directory, f)
    os.rename(input_file, output_file)

【问题讨论】:

  • 到目前为止你做了什么?
  • 你只需要根据文件名删除它们吗?我不完全明白是什么阻止您遍历所有图像,提取基本名称,将它们写入字典/列表,然后删除遇到的所有进一步重复。
  • @moritzg 我刚刚在原始评论中添加了代码

标签: python duplicates


【解决方案1】:

给定:

>>> fns
['image001.nef', 'image002.nef', 'image003.nef', 'image003 - 20170609.jpg', 'image004.nef', 'image005.nef', 'image006 - 20170609.nef', 'image007.nef', 'image007 - 20170609.jpg', 'image008.jpg', 'image008 - 20170609.nef']

(我可以使用该列表作为文件名列表的代理。只需使用 glob 或 listdir 文件...)

如果您的文件名都是 imageXXX 形式,您可以先使用它来创建一组文件名的前 8 个字母 .nef 文件:

>>> ref_nef={fn[0:8] for fn in fns if fn.upper().endswith('.NEF')}
>>> ref_nef
set(['image008', 'image005', 'image004', 'image007', 'image006', 'image001', 'image003', 'image002'])

然后用它来过滤.jpg要删除的文件:

>>> filter(lambda e: e[0:8] in ref_nef, [fn for fn in fns if fn.upper().endswith('.JPG')])
['image003 - 20170609.jpg', 'image007 - 20170609.jpg', 'image008.jpg']

【讨论】:

  • 我想知道我的新问题是否有一个非常简单的解决方案。您的解决方案解决了我 99% 的问题,但我刚刚发现有一些流氓 NEF 文件。如果您看到this screenshot,您会看到一些重复的 NEF 文件存在,我想知道是否有办法从我的文件夹中删除所有较新的 nef 文件。在这种情况下,需要删除顶部的名称,它将具有更长的名称并且更新。你能帮忙解决这个问题吗?非常感谢您的帮助!
  • 如果这个能达到 99%,那么就用这个。之后,您可以在实际读取文件并进行比较的地方使用 dup 查找方法。 md5 哈希对此很有用。祝你好运。如果您遇到困难,请提出一个新问题
猜你喜欢
  • 2019-07-21
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
相关资源
最近更新 更多