代码成效演示
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
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv3141