我恳请您提供有关如何编码 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
如果您对输出满意,请删除。