需求:要求批量修改图片,文件名,并修改工程内使用到的内容。
思路:遍历要修改的文件,修改文件名前,遍历工程内容查找使用到的文件名,然后修改工程内使用到的文件名,再修改文件名。
需了解的函数:字符串操作,遍历文件夹,判断文件还是文件夹,文件重命名,判断文件类型,文件内容查找替换字符串。
实例代码
import 'os'
sLuaPath = './src/project'
sPicPath = './res/image'
uCount = 1
def fRenamePic(sInitPath, sFile):
sFilePath = os.path.join(sInitPath, sFile) # 拼接好遍历当层的文件
if (os.path.isfile(sFilePath)):
# 如果是文件,则修改名称,并去修改lua文件内的内容
fRenameLua(sFilePath)
else:
for sFile1 in sFilePath:
fRenamePicPath(sFilePath, sFile1) # 递归遍历下层
def fRenameLua(sFilePath):
for sLua in os.listdir(sLuaPath):
fReplaceLuaContent(sLuaPath, sLua, sFilePath)
def fReplaceLuaContent(sLuaPath, sLua, sPicPath):
sFilePath = os.path.join(sLuaPath, sLua)
if (os.path.isfile(sFilePaht)):
# 如果是文件,则修改名称,并修改lua文件内内容
lStrList = sFilePaht.split('/')
sFileName = lStrList[len(lStrList)-1]
# 读取文件内容
fhFile1 = open(sFilePath,"r")
sContent = fhFile1.read()
fhFile1.close()
# 替换文件内容
sNew = sContent.replace('tihuan_name_'+uCount, sFileName)
# 重写文件
with open(sFilePath, 'w') as fhFile2:
fhFile2.write(sNew)
else:
# 递归遍历
for sLua1 in os.listdir(sFilePath):
fReplaceLuaContent(sFilePath, sLua1, sPicPath)
for val in os.listdir(sPicPath):
fRenamePic(sPicPath, val)