Снимаю RAW+JPG, а именно NEF и JPG. После просмотра иногда сотен изображений (с помощью простой программы) и удаления файлов JPG у меня остается много ненужных оставшихся файлов NEF. Если бы существовал сценарий для удаления любых потерянных файлов NEF в каталоге, это было бы очень полезно. Я прочитал аналогичный вопрос здесь « Как удалить файлы JPG, но только если существует соответствующий файл RAW? », и решение, представленное в командной строке, работает очень хорошо. Мне было интересно, если один был доступен для моего затруднительного положения?
Я написал скрипт на Python , который сделал всю работу за меня. Он называется, remove-orphaned-raw-images.py
и я опубликовал его на Github .
По сути, он перебирает все файлы в заданной папке и перемещает потерянные необработанные изображения (в моем случае *.CR2
файлы без соответствующего JPEG) в резервную папку. При желании вы можете сказать скрипту, чтобы он действительно удалял файлы.
Вот набросок алгоритма:
Инструмент расскажет вам, как его использовать при запуске с параметром справки -h
в командной строке.
Эта проблема также возникла у меня, поэтому я написал этот инструмент. Я использую свою цифровую зеркальную камеру, чтобы снимать изображения в формате JPEG или RAW+JPEG, а не только RAW. При сортировке размытых или иных плохих снимков я использую JPEG, чтобы быстро просмотреть их и удалить плохие. Это оставляет мне оставшиеся RAW-изображения, из которых я удалил соответствующие JPEG-файлы (по какой-то причине).
Используя вопрос, который вы упомянули, я написал вам сценарий
хорошо предупреждение! будьте осторожны с этим скриптом! - СДЕЛАЙТЕ БЭКАП
1) Создайте bat-файл с именем clean.bat и поместите его в каталог, с которым вы хотите работать.
2) Затем введите следующее в bat-файл
mkdir keep
for /f "delims==" %%r in ('dir /b *.jpg') do move "%%~dpr%%~nr.nef" "%CD%\keep\" 2> nul
move *.jpg "%CD%\keep\"
del *.nef
del *.jpg
move "%CD%\keep\*.*" "%CD%\"
rmdir keep
3) Откройте командную строку от имени администратора и перейдите в папку с clean.bat 4) запустите clean.bat
В основном поток сценария
Пожалуйста, ПОЖАЛУЙСТА, проверьте это!
ОБНОВЛЕНИЕ: изменен скрипт для работы с папками, в которых есть пробелы .
Вот мой скрипт на Python для удаления cr2 без jpeg.
Он ищет рекурсивно в текущем каталоге, ".". Он рассматривает все изображения во всех папках.
import os
import sys
#Searches through the current directory, recursively, looking for any raw
#and jpeg files. It enumerates the jpegs it finds, without the extension, and
#then enumerates the raw files it finds. If it finds a raw file for which no
#jpeg exists, then it deletes the raw file.
#
# This WILL NOT WORK, if there are files with repeated file numbers.
# this will NOT be an issue if there's only one camera.
# A dict of filename: (rawpath, jpegpath)
files_seen = {}
for (cur_dir, subdirs, files) in os.walk("."):
for file in files:
fname, fext = os.path.splitext(file)
fext = fext.lower()
if (fext == ".jpg"):
content = files_seen.setdefault(fname, [None, None])
# if it is then filenames have du'ped
assert(content[1] is None)
content[1] = os.path.join(cur_dir, file)
elif (fext == ".cr2"):
content = files_seen.setdefault(fname, [None, None])
assert(content[0] is None)
content[0] = os.path.join(cur_dir, file)
#at the end, we look for raw files without a jpeg,
for key in files_seen:
(raw_path, jpeg_path) = files_seen[key]
if jpeg_path is None:
print("Deleting: %s" % raw_path)
#os.system("pause.exe")
os.unlink(raw_path)
print("Done")
os.system("pause.exe")
Бен Парсонс
Итай
пользователь14216
Никто