.txtファイルなしで.jpg画像を削除するためにPythonスクリプトをコーディングする方法についての指示やサポートを親切に要求します。現在の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
出力が満足な場合は削除してください。