1. 問題描述
所需要實(shí)現(xiàn)的修改的種類
修改的方式:指增把沼、刪、更吁伺。
修改的內(nèi)容:包括對(duì)前綴(或后綴)饮睬、特定字段。
2.解決思路
step1:實(shí)現(xiàn)單個(gè)文件名的修改
? 如何增加前/后綴篮奄,如何插入特定字段捆愁;
? 如何刪除前/后綴,如何插入特定字段窟却;
? 如何更換前/后綴昼丑,如何插入特定字段。
step2實(shí)現(xiàn)批量操作
3.尋找所需函數(shù)及方法
根據(jù)1.2確定的解決思路夸赫,尋找相應(yīng)的功能函數(shù)菩帝。
(1)讀取文件名的函數(shù)
os模塊,os.listdir()
(2)文件名修改的函數(shù)
①修改文件名函數(shù):os.rename()
②建立修改規(guī)則的函數(shù):translate()
方法進(jìn)行轉(zhuǎn)換茬腿,并須通過str.maketrans()
建立轉(zhuǎn)換規(guī)則表呼奢。
(3)批量修改用循環(huán)語句
for循環(huán)
4.相關(guān)函數(shù)用法解析
(1) translate()用法說明
用途:S.translate(transtab) -> str
??將S中的字符按照一定的規(guī)則轉(zhuǎn)換為str。 其中滓彰,轉(zhuǎn)換規(guī)則由轉(zhuǎn)換表transtab來給出控妻。
語法
?S.translate (transtab)
參數(shù)說明
? ?transtab -- 轉(zhuǎn)換規(guī)則表,需要借助maketrans()
方法(詳見下一條)揭绑。
(2)str.maketrans()用法說明
用途:返回一個(gè)可用于str.translate()的轉(zhuǎn)換表弓候。
語法
?str.maketrans (arg1[,arg2[,arg3])
參數(shù)說明
?如果只有一個(gè)參數(shù)郎哭,那么它必須是一個(gè)將Unicode序數(shù)(整數(shù))或字符映射到Unicode序數(shù)、字符串或None的字典菇存。字符鍵將被轉(zhuǎn)換為序數(shù)夸研。
?如果有兩個(gè)參數(shù),它們必須是<font color=red>長(zhǎng)度相等</font>的字符串依鸥,在得到的字典中亥至,arg1中的每個(gè)字符將映射到arg2中相同位置的字符。
?如果有第三個(gè)參數(shù)贱迟,arg3必須是一個(gè)字符串姐扮,其字符將在結(jié)果中映射為None,即刪除arg3所指定字體串中的字符衣吠。
(3)示例1:對(duì)給定字符串進(jìn)行修改
#建立轉(zhuǎn)換規(guī)則表
intab = "abc"
outtab = "123"
transtab = str.maketrans(intab,outtab)
#進(jìn)行轉(zhuǎn)換
sentence = "This is a test string!"
print(sentence.translate(transtab))
輸出結(jié)果將sentence中的’a‘替換為了’1‘茶敏,如圖
This is 1 test string!
(4)os.rename()用法說明
用途:重命名文件或目錄。
語法
?os.rename(old_fname,new_fname)
參數(shù)說明
??old_fname---原文件名缚俏。
??new_fname---修改后的新文件名惊搏。
(5)示例2:對(duì)指定文件夾中文件加前綴
# 導(dǎo)入os模塊
import os
# 獲取文件路徑
path = 'C:\\myProject\\test'
# 設(shè)置工作路徑
os.chdir(path)
# 讀取文件名
filelist = os.listdir(path)
# 修改文件名
for fname in filelist:
os.rename(fname, '[pre]'+fname) # 加前綴
5.總體解決方案
實(shí)現(xiàn)對(duì)任意指定文件夾中的文件,進(jìn)行任意所需要的重命名忧换。
示例3:對(duì)指定文件夾中文件進(jìn)行重命名
# 導(dǎo)入os模塊
import os
# 獲取文件路徑
path = 'C:\\myProject\\test'
# 設(shè)置工作路徑
os.chdir(path)
# 讀取文件名
filelist = os.listdir(path)
# 建立重命名規(guī)則
transtab = str.maketrans('','','[pre]') #此規(guī)則為恬惯,刪除文件名中所含有的[pre]
# 修改文件名
for fname in filelist:
os.rename(fname, fname.translate(transtab)) # 加前綴
說明
transtab = str.maketrans('','','[pre]')
此規(guī)則為,刪除文件名中所含有的各個(gè)單獨(dú)
字符亚茬,更確切的方式應(yīng)當(dāng)使用正則表達(dá)式
酪耳。
有關(guān)正則表達(dá)式,且聽下回分解
才写。
6.本文運(yùn)行環(huán)境說明
Python 3.6.4
注意:python 2 中 translate()函數(shù)使用方法略有不同葡兑。
7.主要參考資料
1.Python translate()方法https://www.runoob.com/python/att-string-translate.html
2.Python maketrans()方法https://www.runoob.com/python/att-string-maketrans.html
3.批量刪除含特殊符號(hào)的前綴/后綴文件名——python實(shí)現(xiàn)https://blog.csdn.net/weixin_39975436/article/details/88668728