Python: удаление файлов jpg без сопоставления файлов txt

По крайней мере, с GNU find вы можете использовать встроенный -в -printf, например.

find. -mindepth 1 -maxdepth 1 -type d -printf '%f/\n' -o -type f -printf '%f\n'
-3
05.07.2019, 14:08
2 ответа

Вы можете сделать это с помощью простого цикла for из папки с изображениями:

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

Удалите echo, если результат вас устраивает.

0
28.01.2020, 05:19

Я создал такое дерево каталогов:

.
├── 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)
0
28.01.2020, 05:19

Теги

Похожие вопросы