文件夹下文件命名脚本

import os
#############配置参数###############
# 功能:
#    1、    提供一个二级目录的文件夹,将该文件夹下面的多个子文件夹的名字修改为  文件夹名 + 空格 + 数字编码
#           例如 A文件夹下只有文件夹,第一个文件修改为   a 0001.文件后缀

#    2、     提供一个一级目录的文件夹,将该文件夹下的文件修改成   文件夹名 + 空格 + 数字编码
#             例如  B文件夹下只有文件,第一个文件修改为  B 0001.文件后缀

#     两者的区别只是在path输入不同
#用户配置信息
path = r"D:\cc\bbb\123\3"    # 该参数是修改路径,例如D:\cc\bbb\123,提供的路径放在引号里面路径 ,不要动引号前面的r
num =  5   #填充总位数    # 该参数是数字编码总位数,如0001   num = 4,可以按照需求调整大小
a = 1       #填充的起始数   表示第一个数从 0001  前面0的个数和num有关,num=4,个位数前面就是3个0,十位数2两个.....


#######  注意  #########
#  1、每一个修改后的文件名不能在当前文件夹中存在,否则会报错,可以通过修改num避免
#      例如将A文件夹中a.png修改成A 0001.png,但是文件夹A中已经有图片叫做A 0001.png,此时会报错
#  2、如果是二级目录中,第一级只能是目录,不能有文件




# 函数正文
def rename(path,num,a):

    # 获取该路径下所有文件
    dirlists = os.listdir(path)
    # print(os.path.join(path, dirlists[0]))
    if os.path.isdir(os.path.join(path, dirlists[0])):
        doubleDir(dirlists, num, a)
    else:
        sigleDir(path,num,a)


def sigleDir(path,num,a):

    changeName(path, a, num)

def doubleDir(dirlists,zero,a):

    for dirlist in dirlists:
        pathname = os.path.join(path, dirlist)
        changeName(pathname,a,zero)


def changeName(pathname,a,zero):
    zerostr = ''
    filelist = os.listdir(pathname)
    a1 = a
    fileName = pathname.split('\\')[-1]
    for files in filelist:
        # 原始路径
        Olddir = os.path.join(pathname, files)
        i = 0
        b = len(str(a1))
        while (i < (zero - b)):
            zerostr = zerostr + '0'
            # print(i)
            i += 1

        # .bmp
        filetype = os.path.splitext(files)[1]
        # filename = files.split('.')[0]
        # 需要存储的路径 a 是需要定义修改的文件名
        Newdir = os.path.join(pathname, fileName + " " + zerostr + str(a1) + filetype)
        zerostr = ''
        os.rename(Olddir, Newdir)
        a1 += 1

if __name__ == "__main__":
 rename(path,num,a)

配置文件版

args.ini

[args]
;需要修改图片的路径,文件夹是一级目录和二级目录都可以
path=E:\测试                   

;填充总位数
num=3           
  
;起始点               
start=1                            

;注意:每次修改必须按ctrl+s 保存,看一下记事本文件名上面是否*号,有表示没有保存
;请务必保证前3行 "=" 和"#"不被删除
;不能存在和修改名相同的文件
import os
# coding=utf8
import os
import argparse
import configparser

config = configparser.ConfigParser()
config.read('args.ini',encoding='utf-8')
path  = config.get('args','path')
num = int(config.get('args','num'))
start = int(config.get('args','start'))
# with open("args.txt",'r',encoding='utf-8') as f:
#     data = f.readlines()
#
# # print(data)
# #功能: 将A文件夹下的文件移动到B文件夹中,并且按照B中的已有的顺排序
# ###################可修改参数########################
# #导入目录
# path = data[0].split("=")[1].split('#')[0].strip()   # 该参数是修改路径,例如D:\cc\bbb\123,提供的路径放在引号里面路径 ,不要动引号前面的r,路径不能以 \ 结束
# #填充总位数
# num  =  int(data[1].split("=")[1].split('#')[0].strip())    #填充总位数    # 该参数是数字编码总位数,如0001   num = 4,可以按照需求调整大小
# #插入点
# a = int(data[2].split("=")[1].split('#')[0].strip())    #填充的起始数   表示第一个数从 0001  前面0的个数和num有关,num=4,个位数前面就是3个0,十位数2两个.....

#############配置参数###############
# 功能:
#    1、    提供一个二级目录的文件夹,将该文件夹下面的多个子文件夹的名字修改为  文件夹名 + 空格 + 数字 # 该参数是修改路径,例如D:\cc\bbb\123,提供的路径放在引号里面路径 ,不要动引号前面的r,路径不能以 \ 结束编码
#           例如 A文件夹下只有文件夹,第一个文件修改为   a 0001.文件后缀
#

#    2、     提供一个一级目录的文件夹,将该文件夹下的文件修改成   文件夹名 + 空格 + 数字编码
#             例如  B文件夹下只有文件,第一个文件修改为  B 0001.文件后缀

#     两者的区别只是在path输入不同
 #########
#  每一个修改后的文件名不能在当前文件夹中存在,否则会报错,可以通过修改num避免
#  例如将A文件夹中a.png修改成A 0001.png,但是文件夹A中已经有图片叫做A 0001.png,此时会报错
#  多级文件夹只能在最后一级文件夹存放文件




# 函数正文
def rename(path,num,a):

    # 获取该路径下所有文件
    dirlists = os.listdir(path)
    # print(os.path.join(path, dirlists[0]))
    try:
        if os.path.isdir(os.path.join(path, dirlists[0])):
            doubleDir(dirlists, num, a)
        else:
            sigleDir(path,num,a)
    except NotADirectoryError as e:
           print("该目录下不能有  "+str(e).split('。')[-1])

def sigleDir(path,num,a):

    changeName(path, a, num)

def doubleDir(dirlists,zero,a):

    for dirlist in dirlists:
        pathname = os.path.join(path, dirlist)
        changeName(pathname,a,zero)


def changeName(pathname,a,zero):
    zerostr = ''
    filelist = os.listdir(pathname)
    a1 = a
    fileName = pathname.split('\\')[-1]
    for files in filelist:
        # 原始路径

        Olddir = os.path.join(pathname, files)
        if os.path.isdir(Olddir):
            break
        i = 0
        b = len(str(a1))
        while (i < (zero - b)):
            zerostr = zerostr + '0'
            # print(i)
            i += 1
        # .bmp
        filetype = os.path.splitext(files)[1]
        # filename = files.split('.')[0]
        # 需要存储的路径 a 是需要定义修改的文件名
        Newdir = os.path.join(pathname, fileName + "-" + zerostr + str(a1) + filetype)
        zerostr = ''
        os.rename(Olddir, Newdir)
        a1 += 1

if __name__ == "__main__":
 rename(path,num,start)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值