文件夹图片批量管理

注册表添加右键的Edit with IDLE,用python实现大批量的图片按名称重命名、按时间重命名、删除文件名不包含某段字符串的图片

Posted by LJJ on February 16, 2020

文件夹图片批量管理与注册表添加

注册表添加Edit with IDLE

首先来看到注册表添加IDLE;

  • WIN+R键运行命令窗口,输入regedit,点击确定打开注册表。

    1.PNG

  • 输入框中定位到,SystemFileAssociations,新建项。

    2.PNG

  • 建立完整的.py项,包括shell->edit->command。

    3.PNG

  • 点击shell/edit,找到右边框。更改数值数据为Edit with IDLE。

    4.PNG

  • 最后点击command,更改数值数据为如下所示:

    5.PNG

python实现图片管理

按名称重命名

  • os.walk():遍历指定目录

  • os.renme(old, new):文件重命名

  • os.path.join(a, b):连接组合路径
  • 图片数量考虑在1000张以内

直接看代码:

# -*- coding: utf-8 -*-

import os
import os.path                                   
def renameNameSorted(dirPath):
    i=0
    for parent,dirnames,filenames in os.walk(dirPath):     
        for filename in filenames:

            # 这里图片大小定义在1000内
            if i < 10:
                newName = "00" + str(i)
            elif i > 9 and i < 100:
                newName = "0" + str(i)
            else:
                newName = str(i)

            i=i+1    
            newName=newName+'.jpg'
            
            os.rename(os.path.join(parent,filename),os.path.join(parent,newName)) 


if __name__ == '__main__':
    renameNameSorted(r"D:\demo") #输入指定路径
    print("Finished!")

按时间重命名

  • os.path.getmtime(name) :获取文件的修改时间

看代码:

import os
import os.path

def renameFilesSortedByTime(dirPath):
    mlist = []

    files = os.listdir(dirPath)

    for filename in files:
        createTime = os.path.getmtime(dirPath + filename)

        # 这里将时间与文件名放一起方便后续作截取
        mlist.append(str(int(createTime)) + "-" + filename)

    mlist = sorted(mlist)

    for i in range(len(mlist)):
        oldName = mlist[i][11:]
        if (i + 1) < 10:
            newName = "cr00" + str(i + 1) 
        elif (i + 1) > 9 and (i + 1) < 100:
            newName = "cr0" + str(i + 1)
        else:
            newName = "cr"+str(i + 1)
        newName = newName + '.jpg'
        os.rename(dirPath + oldName, dirPath + newName)

if __name__ == '__main__':
    renameFilesSortedByTime("D:/demo")
    print("Finished!")

删除文件名不包含某段字符串的文件

  • find函数用来匹配字符串,remove函数用来删除文件。
import os

def delFilesByID(dirPath):
    for root, dirs, files in os.walk(dirPath):
        for name in files:
            if name.find("sample") == -1:
                os.remove(os.path.join(root, name))
            
if __name__ == '__main__':
    delFilesByID(r"D:\demo") #输入指定路径
    print("Finished!")