gpt4 book ai didi

python - 使用python查找具有不同扩展名的重复文件

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:13 24 4
gpt4 key购买 nike

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

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

  • 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 的图像

因此,从我上面的列表中,只有三个项目符合删除条件(我将这些项目粗体)。

我有 2,500 张图像,因此我需要一种 Pythonic 方式来手动浏览。

我很难找到要使用的示例脚本,我找到的所有脚本都在检查哈希或其他内容,我认为这没有用,因为图像确实相似,但不相同。

干杯

编辑:感谢 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)

最佳答案

给定:

>>> 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']

关于python - 使用python查找具有不同扩展名的重复文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44450471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com