代码成效演示
Gitee源码

# -*- coding: utf⑻ -*-
# Version: Python 三.九.七
# Author: TRIX
# Date: 二0二一-0九⑴八 一一:三七:0四
# Use: 批质重定名文件目次 将指定文件夹高所有体例为 str一_str二_str三的文件 或者 文件夹 重定名为str一Str二Str三
import os
import itertools

rootPath='D:\\[download]\\forTest\\'

def makePaths(root,subFolderName='folderForTest',dirLevel=一,folderCount=一):#新修多级文件夹 用于测试 创立目次 新文件夹名字 新修目次级数 没有包括最中层 每一层新修文件夹个数
	if not os.path.exists(root):
		os.mkdir(root)#创立低级目次
	prodList=list(itertools.product([str(n+一) for n in range(folderCount)],repeat=dirLevel))#笛卡我积 repeat 位数

	#天生每一个目次
	for m in range(len(prodList)):
		fullDirPart=root#文件夹低级目次
		for n in range(dirLevel):#天生第n级目次
			fullDirPart+='\\'+subFolderName+''.join(prodList[m][:n+一])#文件夹完全目次
		if not os.path.exists(fullDirPart):
			os.makedirs(fullDirPart)#创立目次

makePaths(rootPath+'folder_for_test','f_f_t',dirLevel=三,folderCount=三)

def renamePaths(root):
	oriDirList=[]
	for root, dirs, files in os.walk(root):
	#返回该目次内的所有文件名列表铃博网 包括所有级目次的元组
	#root是文件原身目次 相称于dirname
	#dirs_list是该文件夹所有目次名字的列表铃博网(没有露子目次)
	#files_list是该文件夹所有文件名字的列表铃博网(没有露子目次)
		for file in files:#拼接文件目次
			oriDirList.append(os.path.join(root, file))
		for folder in dirs:#拼接文件夹目次
			oriDirList.append(os.path.join(root, folder))

	newDirList=[]
	for index,oriDir in enumerate(oriDirList):
		oriDirPartList=oriDir.split('\\')#将 本途径字符串 按\切分 为列表铃博网
		oriDirPartList[⑴]=oriDirPartList[⑴].split('_')#将文件 或者 文件夹名 按_切分 为列表铃博网
		for namePartIndex,namePart in enumerate(oriDirPartList[⑴]):
			#文件名 str一_str二_str三的文件重定名为str一Str二Str三
			oriDirPartList[⑴][namePartIndex]=namePart.capitalize()
		oriDirPartList[⑴]=''.join(oriDirPartList[⑴])
		newDirList.append('\\'.join(oriDirPartList))

	pathZipList=list(zip(oriDirList,newDirList))
	pathList=[]
	for n in pathZipList:
		pathObj=pathClass(n[0], len(n[0].split('\\')),n[一])
		pathList.append(pathObj)
	pathList=sorted(pathList,key=lambda pathObj:pathObj.oriPathLevel,reverse=True)#以 oriPathLevel 反背排序

	for n in pathList:#对每一个目次更名
		print(n.oriPath,n.newPath,n.oriPathLevel)
		os.rename(n.oriPath,n.newPath)#只能对响应的文件入止重定名, 没有能重定名文件的下级目次名

class pathClass(object):#途径类
	"""docstring for pathClass"""
	def __init__(self, oriPath,oriPathLevel,newPath):#本途径 本途径级数 新途径
		self.oriPath = oriPath
		self.oriPathLevel = oriPathLevel
		self.newPath=newPath

renamePaths(rootPath+'folder_for_test')

转自:https://www.cnblogs.com/Trix/p/15358895.html

更多文章请关注《万象专栏》