from os import walk,getcwd,makedirs,system
from shutil import copyfile,rmtree
from os import path
代码语言:javascript复制cwd=getcwd()#获取当前路径
input(f"按下回车键将整理:{cwd}目录下的文件:")
d={}#保存各个类型的文件信息
cnt={}#保存重名文件的个数
idx={}#保存重名文件当前是几号,从1开始
if path.exists("output"):
rmtree("output")#删除之前的输出文件夹
for dirname,dirs,files in walk(cwd):
#遍历当前文件夹以及子文件夹下的所有文件
for i in files:
#i表示文件名
fileType=path.splitext(i)[1]#获取文件后缀名
fileType=fileType.replace(".","")#替换后缀名的小数点
if fileType.strip()=="":
#没有后缀名的文件
fileType="None"
loction=dirname "\" i#文件所在绝对路径
baseName=path.split(loction)[1]#获取文件名,和i的值一样
prefix=".".join(baseName.split(".")[0:-1])#获取文件前缀名
if fileType=="None":
prefix=baseName
file={"fileType":fileType,"loction":loction,"baseName":baseName,"prefix":prefix}
if fileType not in d.keys():
d[fileType]=[file]
else:
d[fileType].append(file)
if baseName not in cnt.keys():
cnt[baseName]=1
idx[baseName]=1
else:
cnt[baseName] =1
#复制文件
for k,v in d.items():
#k表示文件类型
outputDir=f"output\{k}"
if path.exists(outputDir) is False:
#创建以文件类型(k)命名的文件夹
makedirs(outputDir)
for file in v:
#遍历改类型的所有文件
newFilePath=outputDir "\"#储存该文件的新路径
newBaseName=""
if cnt[file["baseName"]]==1:
#改文件只出现过一次
newBaseName=file["baseName"]
else:
#该文件出现过多次需要使用下划线加编号格式保存
newBaseName=file["prefix"] "_" str(idx[file["baseName"]])
if file["fileType"]!="None":
newBaseName=f"{newBaseName}.{file['fileType']}"
idx[file["baseName"]] =1
newFilePath=cwd "\" newFilePath newBaseName
copyfile(file["loction"],newFilePath)#复制文件
print("输出结果已保存到",cwd "output","文件夹中!")
system("pause")