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出力が満足な場合は削除してください。

関連情報