python renamer模块_Python - 批量文件重命名
兩個目標兩個:
1. 輸入一組文件名,進行批量重命名;
2. 輸入一組目錄名,批量重命名各個目錄下的文件。
附加功能:
1. 可根據文件的創建日期對文件重新排序;
2. 重命名方式為遞增數列,可帶前后綴;
3. 可以指定輸出目錄,如果不指定輸出目錄,則在原文件夾中重命名,默認為在原文件夾中進行重命名;
4. 可指定在重命名后刪除原文件(只有輸出目錄不同時有效),默認為不刪除。
代碼:
importos#獲取目錄下的子目錄defsubdirs(path):
dl=[];foriinos.walk(path, False):fordini[1]:
dl.append(os.path.join(path, d))returndl#獲取目錄下的子文件defsubfiles(path):
fl=[];foriinos.walk(path, False):forfini[2]:
fl.append(os.path.join(path, f))returnfl#根據文件創建時間對文件進行排序deffsort(files):
files.sort(key=lambdas: os.path.getctime(s))returnfiles#遞增數列生成器classgen:def__init__(self, prefix='', suffix='', seed=1, digit=3):
self.prefix=prefix
self.suffix=suffix
self.seed=seed
self.digit=digit
self.it=seed-1defgennext(self):
self.it+=1return'{0}{1:0{3}d}{2}'.format(self.prefix, self.it, self.suffix, self.digit)defcopy(self):returngen(self.prefix, self.suffix, self.seed, self.digit)classrenamer:def__init__(self, files, ngen=None, delsrc=False, output=''):
self.it=0
self.total=0
self.files=files
self.delsrc=delsrc
self.target=outputif(ngenisNone): self.namegen=gen()elif(isinstance(ngen, gen)): self.namegen=ngenelse:raise(TypeError,'ngen參數只接受gen類型的對象')defrename(src, des, delsrc):
os.rename(src, des)if(delsrc==True):
os.remove(src)defrun(self):
self.it=0
self.total=len(self.files)forfinself.files:
dn=os.path.dirname(f)
ex=os.path.splitext(f)
nn=self.namegen.gennext()+ex[1]
np=''sd=self.target==''if(sd):
np=os.path.join(dn, nn)else:
np=os.path.join(self.target, nn)print('rename: %s'%(np))
renamer.rename(f, np, sdandself.delsrc)
self.it+=1print('%d work(s) done'%(self.it))print()#重命名給定列表中的所有文件deffs_rename(files, resort=False, ngen=gen(), delsrc=False, output=''):if(resort): fsort(files)
rn=renamer(files, ngen.copy(), delsrc, output)
rn.run()#重命名給定目錄中的所有文件defds_rename(dirs, resort=False, ngen=gen(), delsrc=False, output=''):fordindirs:
fs=subfiles(d)if(resort): fsort(fs)print('%d file(s) in %s'%(len(fs), d))if(output=='') ngen=ngen.copy()
rn=renamer(fs, ngen, delsrc, output)
rn.run()
說明
fs_rename方法對一組文件進行批量重命名。
參數說明:
files: 文件列表;
resort: 是否重新排列文件(按創文件建時間),默認為False;
ngen: 一個gen類型的對象,用于產生文件名;
delsrc: 是否刪除原文件,默認為False;
output: 輸出路徑,默認為'',表示在原文件家中重命名。
ds_rename方法對一組目錄中的文件進行批量重命名。
參數說明:
dirs: 目錄列表;
resort: 是否重新排列文件(按創文件建時間),默認為False;
ngen: 一個gen類型的對象,用于產生文件名;
delsrc: 是否刪除原文件,默認為False;
output: 輸出路徑,默認為'',表示在原文件家中重命名。
gen類型構造函數創建數列發生器。
參數說明:
prefix: 前綴字符串;
suffix: 后綴字符串;
seed: 起始數;
digit: 數為寬,不夠用0補齊。
subdirs方法獲取一個目錄下的子目錄,并返回完整路徑。
subfiles方法獲取一個目錄下的所有文件,并返回完整路徑。
fsort方法對一組文件根據其創建時間進行重新排序。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python renamer模块_Python - 批量文件重命名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国银行动态口令是什么 动态口令如何获得
- 下一篇: 房贷提前还款到底收多少违约金