如何使用脚本移动和重命名DVR中的图像?

时间:2019-07-10 22:09:23

标签: python image jpeg rename move

我有一台DVR摄像机,它每小时拍摄一次图像,并将每个图像存储在自己的文件夹中。我想使用python脚本将所有图像移动到一个主文件夹中,然后根据它们所在的文件夹对其重命名。当前的文件夹结构如下所示。

图片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。

我想要 MainFolder/2019_7_04_0700.jpgMainFolder/2019_7_04_0800.jpg查看下一个小时的照片。

当前,我有一个文件夹梦night,每个图像都名为00[R][0@0][0].jpg

1 个答案:

答案 0 :(得分:1)

您可以使用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))