146 lines
5.3 KiB
Python
146 lines
5.3 KiB
Python
![]() |
import os
|
|||
|
import csv
|
|||
|
from re import S
|
|||
|
import shutil
|
|||
|
|
|||
|
currentPath = os.getcwd().replace('\\','/') # 获取当前路径
|
|||
|
rawPath = "" # 资源raw路径
|
|||
|
|
|||
|
# 测试写入fbx
|
|||
|
def WriteCsv():
|
|||
|
r1 = [1,2,3]
|
|||
|
r2 = [4,5,6]
|
|||
|
csvfile = open("./resource.csv","w",encoding='utf-8')
|
|||
|
|
|||
|
writer = csv.writer(csvfile,lineterminator='\n')
|
|||
|
writer.writerow(["文件名","绝对路径","备注"])
|
|||
|
writer.writerows([r1,r2])
|
|||
|
|
|||
|
csvfile.close()
|
|||
|
|
|||
|
|
|||
|
# 获取Raw绝对路径
|
|||
|
def GetRawPath():
|
|||
|
PathList = currentPath.split("/")
|
|||
|
for i in range(len(PathList)):
|
|||
|
global rawPath
|
|||
|
if(PathList[i] != "ResourcesRaw"):
|
|||
|
rawPath = rawPath + PathList[i] + "/"
|
|||
|
else:
|
|||
|
rawPath = rawPath + PathList[i] + "/"
|
|||
|
break
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 第一次筛选,筛选出公共的表情动作模型资源
|
|||
|
def FirseListFile(dirPath):
|
|||
|
|
|||
|
|
|||
|
restcsvFile = open("./rest.csv","w",encoding='utf-8') # 剩余文件列表
|
|||
|
restWriter = csv.writer(restcsvFile,lineterminator='\n')
|
|||
|
restWriter.writerow(["文件名","绝对路径","所属"])
|
|||
|
|
|||
|
Firstcsvfile = open("./first.csv","w",encoding='utf-8') # 第一次修改的文件列表
|
|||
|
writer = csv.writer(Firstcsvfile,lineterminator='\n')
|
|||
|
writer.writerow(["文件名","绝对路径","所属","编号"])
|
|||
|
|
|||
|
for root, dirs, files in os.walk(dirPath):
|
|||
|
|
|||
|
# fileName.append()z
|
|||
|
# 循环遍历列表:files【所有文件】,仅得到不包含路径的文件名
|
|||
|
for fileObj in files:
|
|||
|
global rawPath
|
|||
|
case = fileObj.casefold()
|
|||
|
name = str(fileObj)
|
|||
|
belong = ""
|
|||
|
index = ""
|
|||
|
if((".fbx" in case)):
|
|||
|
if((not ".meta" in case) and ("prop" in case) and (not "ing" in case) and (not "lob" in case)):
|
|||
|
nameList = name.split("@")
|
|||
|
if(len(nameList) > 1):
|
|||
|
frontNameList = nameList[0].split("&")
|
|||
|
if(len(frontNameList) > 1):
|
|||
|
belong = frontNameList[1]
|
|||
|
behindNameList = nameList[1].split("_")
|
|||
|
if(len(behindNameList) > 1):
|
|||
|
index = behindNameList[0]
|
|||
|
belongNameList = belong.split("_")
|
|||
|
if(index.isdigit() and len(index) == 8 and len(belongNameList) == 2):
|
|||
|
# 空列表写入遍历的文件名称,并用目录路径拼接文件名称
|
|||
|
path = os.path.join(root, fileObj).replace('\\','/')
|
|||
|
|
|||
|
dir = rawPath + "Common/" + belong + "/Props/" + index + "/Models/"
|
|||
|
if(not os.path.exists(dir)):
|
|||
|
os.makedirs(dir)
|
|||
|
|
|||
|
shutil.move(path,dir+"/"+ fileObj)
|
|||
|
shutil.move(path + ".meta",dir+"/"+ fileObj + ".meta")
|
|||
|
writer.writerow([fileObj,path,belong,index])
|
|||
|
else:
|
|||
|
path = os.path.join(root, fileObj).replace('\\','/')
|
|||
|
frontName = name.split("@")
|
|||
|
frontNameList = frontName[0].split("&")
|
|||
|
behindList = frontNameList[1].split("_")
|
|||
|
|
|||
|
dir = rawPath + "Common/" + belong + "/Props/Common/Models/"
|
|||
|
if(not os.path.exists(dir)):
|
|||
|
os.makedirs(dir)
|
|||
|
|
|||
|
shutil.move(path,dir+"/"+ fileObj)
|
|||
|
shutil.move(path + ".meta",dir+"/"+ fileObj + ".meta")
|
|||
|
|
|||
|
restWriter.writerow([fileObj,path,behindList[0]+"_"+behindList[1]])
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Firstcsvfile.close()
|
|||
|
restcsvFile.close()
|
|||
|
|
|||
|
|
|||
|
def SecondListFile(dirPath):
|
|||
|
alreadyList = []
|
|||
|
|
|||
|
with open("./1.csv",encoding='utf-8-sig') as f:
|
|||
|
index = 0
|
|||
|
for row in csv.reader(f,skipinitialspace=True):
|
|||
|
if(index > 0):
|
|||
|
# print(row[0])
|
|||
|
alreadyList.append(row[0])
|
|||
|
index = index + 1
|
|||
|
|
|||
|
f.close()
|
|||
|
|
|||
|
with open("./2.csv",encoding='utf-8-sig') as f:
|
|||
|
index = 0
|
|||
|
for row in csv.reader(f,skipinitialspace=True):
|
|||
|
if(index > 0):
|
|||
|
# print(row[0])
|
|||
|
alreadyList.append(row[0])
|
|||
|
index = index + 1
|
|||
|
|
|||
|
f.close()
|
|||
|
|
|||
|
Firstcsvfile = open("./first.csv","w",encoding='utf-8') # 第一次修改的文件列表
|
|||
|
writer = csv.writer(Firstcsvfile,lineterminator='\n')
|
|||
|
writer.writerow(["文件名","绝对路径"])
|
|||
|
|
|||
|
for root, dirs, files in os.walk(dirPath):
|
|||
|
# 循环遍历列表:files【所有文件】,仅得到不包含路径的文件名
|
|||
|
for fileObj in files:
|
|||
|
case = fileObj.casefold()
|
|||
|
name = str(fileObj)
|
|||
|
if(('.fbx' in case) and (not '.meta' in case) and (not name in alreadyList)):
|
|||
|
# 空列表写入遍历的文件名称,并用目录路径拼接文件名称
|
|||
|
path = os.path.join(root, fileObj).replace('\\','/')
|
|||
|
writer.writerow([fileObj,path])
|
|||
|
|
|||
|
Firstcsvfile.close()
|
|||
|
|
|||
|
|
|||
|
GetRawPath()
|
|||
|
# FirseListFile(currentPath)
|
|||
|
SecondListFile(currentPath)
|
|||
|
|
|||
|
|
|||
|
|