Python:删除不匹配txt文件的jpg文件

Python:删除不匹配txt文件的jpg文件

我恳请您提供有关如何编码 Python 脚本以删除不带 .txt 文件的 .jpg 图像的指导或支持。目前,我有一个train包含文件夹images和 的文件夹labels。我计划将图像及其匹配的 txt 文件放在一个目录中。有 70000 张图像和 69863 个带有标签的 txt 文件。我需要删除那些没有匹配 txt 文件的图像,这样我就可以拥有相同数量的图像和 txt 文件。即 69863 个图像与这 69863 个 txt 文件相匹配。

示例如下:图像0b911639-98f93d75.jpg有其txt文件0b911639-98f93d75.txt。但是,某些图像缺少 txt 文件。先感谢您!

答案1

我创建了这样的目录树:

.
├── images
│   ├── 1.jpg
│   ├── 2.jpg
│   ├── 3.jpg
│   ├── 4.jpg
│   └── 5.jpg
└── labels
    ├── 1.txt
    ├── 2.txt
    └── 5.txt

最简单的方法:

from os import listdir, remove
labels = listdir('labels')
images = listdir('images')
for image in images:
 if '{}.{}'.format(image.split('.')[0], 'txt') not in labels:
  print('Going to remove %s' % image)
  remove('images/%s' % image)

答案2

您可以使用图像文件夹中的简单 for 循环来完成此操作:

cd images
for f in *.jpg; do [ -f "../labels/${f%.*}.txt" ] || echo rm "$f"; done

echo如果您对输出满意,请删除。

相关内容