Как мне переместить и переименовать изображения с DVR с помощью скрипта? - PullRequest
0 голосов
/ 11 июля 2019

У меня есть DVR камера, которая делает почасовые снимки и сохраняет каждое в своей папке.Я хотел бы использовать скрипт Python, чтобы переместить все изображения в одну основную папку и переименовать их в соответствии с папками, в которых они находятся. Текущая структура папок показана ниже.

image 1 - MainFolder/2019-07-04/001/jpg/07/00/00[R][0@0][0].jpg

изображение 2 - MainFolder/2019-07-04/001/jpg/08/00/00[R][0@0][0].jpg

изображение 3 - MainFolder/2019-07-04/001/jpg/09/00/00[R][0@0][0].jpg

на следующий день изображения будут

изображение 25 - MainFolder/2019-07-05/001/jpg/07/00/00[R][0@0][0].jpg

/ jpg / 07/00 в приведенном выше справочнике для 7:00 утра. * 10101 *

Я хотел бы MainFolder/2019_7_04_0700.jpg и MainFolder/2019_7_04_0800.jpg для следующей часовой фотографии.

В настоящее времяУ меня есть папка кошмар, и каждое изображение называется 00[R][0@0][0].jpg.

1 Ответ

1 голос
/ 11 июля 2019

Вы можете сделать это, используя функцию os.walk(), чтобы найти все файлы изображений с камеры, и модуль pathlib, чтобы получить компоненты пути, необходимые для построения.имя файла назначения.Если у вас есть полные пути к файлам источника и назначения, вы можете использовать функцию shutil.move() для перемещения и переименования каждого из них.

Примечание: код требует по крайней мере Python 3.4 для запуска из-за его использования pathlib, и я закомментировал строку, которая фактически выполняет перемещение и переименование, так что вы можете безопасно запустить и протестировать скрипт, чтобы увидеть, что он будет делать, не делаялюбой ущерб.

import os
import pathlib
import shutil


IMAGE_FILENAME = '00[R][0@0][0].jpg'
EXT = os.path.splitext(IMAGE_FILENAME)[1]  # Image file extension.
root = 'MainFolder'
count = 0

for dir_name, sub_dirs, files in os.walk(root, topdown=False):
    for filename in files:
        if filename == IMAGE_FILENAME:
            src = os.path.join(dir_name, filename)
            relpath = os.path.relpath(src, root)  # Relative to root folder.
            parts = pathlib.Path(relpath).parts  # Relative path components.
            dst = os.path.join(root, parts[0] + '_' + parts[3] + parts[4] + EXT)
            print(' moving "{}" to "{}"'.format(src, dst))
#            shutil.move(src, dst)
            count += 1

print('{} files moved'.format(count))
...