Python: txt 파일과 일치하지 않는 jpg 파일 삭제

Python: txt 파일과 일치하지 않는 jpg 파일 삭제

.txt 파일 없이 .jpg 이미지를 삭제하기 위해 Python 스크립트를 코딩하는 방법에 대한 지침이나 지원을 친절하게 요청합니다. 현재 train폴더 imageslabels. 나는 이미지와 일치하는 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출력이 만족스러우면 삭제하세요.

관련 정보