python批量修改文件名|如何使用Python批量更改文件名的顺序

python批量修改文件名|如何使用Python批量更改文件名的顺序的第1张示图

① python如何批量修改指定目录下的文件名称

# -*- coding: utf-8 -*-import os, sys,re,shutilfrom nt import chdir #读取中文路径 u''path=u"D:\zhyue93\backup\个人文件\视频\10、C#\4、C# 语言进阶特性"dirs=os.listdir(path) #排序 1,2,3…10,11dirs=sorted(dirs,key = lambda i:int(re.match(r'(d+)',i).group())) #将文件改名i=10for dir in dirs:i+=1newDir=os.path.join(path,dir)newFiles=os.listdir(newDir) for file in newFiles: #rename之前要先用chdir()函数进入到目标文件所在的路径,#告诉python编译器要重命名的文件在哪儿,然后才可以修改#改变当前工作目录到指定的路径 chdir(newDir)os.rename(file,str(i)+"-"+file) print '—–'#将文件移动到path路径下print u'移动文件'for dir in dirs:newDir=os.path.join(path,dir)newFiles=os.listdir(newDir) for file in newFiles:oldFilePath=os.path.join(newDir,file)newFilePath=os.path.join(path,file)shutil.move(oldFilePath, newFilePath)#移动文件到目标路径

② 如何使用Python批量更改文件名的顺序

可以用正则替换

③ 求教用python批量更改文件名的名字顺序。

importosdirname=os.path.join('E:','mp3')fs=[iforiinos.listdir(dirname)ifi.endswith('.mp3')]abspath=lambdax:os.path.join(dirname,x)forfninfs:n,ext=os.path.splitext(fn)newname='-'.join([i.strip()foriinn.split('-')][::-1])os.rename(abspath(fn),abspath(newname+ext))

④ 如何用python从文中获取文件名再用正则表达式批量修改文件名

这事我用cmd下的批处理,或者excel VBA都干过。python没写过。

⑤ 怎么用python批量修改一组文件名

有个工具叫 bulkrenameutility,使用其正则替换能达到你的要求。

Python的话,也可以用正则完成,或者获取文件名后用切片也能完成文件名前后的交换。

⑥ python怎样批量修改文件名

import shutilimport osos.rename("oldname","newname") shutil.move("oldpos","newpos")以前两个命令都能改名,先把文件路径放到一个列表里,然后批量调用上面的命令

⑦ python怎么批量改txt文件名

首先获取文件夹下的所有txt文件名到list然后利用循环对list进行重命名文件

⑧ 如何用python批量改文件名

#coding:utf-8#批量修改文件名re_st=r'(d+)+s?((d+))'#用于匹配旧的文件名,需含分组re_match_old_file_name=re.compile(re_st)#要修改的目录WORKING_PATH=r'F:Gallery'#———————————————————————-defrename_fomat(name):"""文件重命名格式组织模块(一般修改这里就可以了)NOTE:返回类型必须是unicode"""ifname:re_rn=re_match_old_file_name.findall(name)ifre_rnandre_rn!=[]:re_rn=re_rn[0]num=int(re_rn)new_nm=u'NO.%04d'%(num)returnnew_nm#———————————————————————-deflogs(error):"""错误记录"""log=''LOG_FILE=open(r'./log.txt','a')live_info="""==========Time:%stitle:%sPath:%s=========="""%(datetime.datetime.now(),str(error['title']),str(error['index']),)log+=live_infoerrors=error['error_paths']foriteminerrors:item='%s'%itemlog+=itemlog=log.encode('utf-8')try:LOG_FILE.write(log)exceptIOError:printu'写入日志失败'finally:LOG_FILE.close()#———————————————————————-defrename(old,new):"""文件重命名模块return:0:renamesuccess1:thenewpathisexists-1:renamefailed"""ifnotos.path.exists(new):try:os.renames(old,new)return0exceptIOError:print'patherror:',newreturn-1else:return1#———————————————————————-defget_dirs(path):"""获取目录列表"""ifos.path.exists(path):returnos.listdir(path)else:return-1#———————————————————————-defget_input_result(word,choice):"""获取正确的输入结果"""correct_result=set(choice)word='===%s?[in]:'%(word)whileTrue:in_choice=raw_input(word)ifin_choiceincorrect_result:returnin_choice#———————————————————————-defbatch_rename(index,dirs=[]):"""批量修改文件"""index=unicode(index)errors=[]ifdirs==[]:dirs=get_dirs(path=index)ifdirsanddirs!=[]:foritemindirs:item=unicode(item)new_name=rename_fomat(item)ifnew_name:old_pt=u'%s\%s'%(index,item)new_pt=u'%s\%s'%(index,new_name)res_rn=rename(old_pt,new_pt)ifres_rn!=0:errors.append(item)else:errors.append(item)iferrorsanderrors!=[]:print'RenameFailed:'logs({'index':index,'title':'RenameFailed','error_paths':errors,})fori,iteminenumerate(errors):printitem,'|',ifi%5==4:print''print''else:return-1#———————————————————————-defbatch_rename_test(index):"""测试返回过滤结果"""index=unicode(index)errors=[]correct=[]dirs=get_dirs(path=index)ifdirsanddirs!=[]:forx,iteminenumerate(dirs):item=unicode(item)new_name=rename_fomat(item)ifnew_name:correct.append(item)old_pt=u'%s\%s'%(index,item)new_pt=u'%s\%s'%(index,new_name)print'[%d]O:%s'%(x+1,old_pt)print'[%d]N:%s'%(x+1,new_pt)else:errors.append(item)iferrorsanderrors!=[]:print'NotMatch:'logs({'index':index,'title':'NotMatch','error_paths':errors,})fori,iteminenumerate(errors):printitem,'|',ifi%5==4:print''print''returncorrect#———————————————————————-defmanage(index):"""程序组织块"""file_filter=batch_rename_test(index)do_choice=get_input_result(word='Dowiththis(y/n)',choice=['y','n'])ifdo_choice=='y':batch_rename(index,dirs=file_filter)print'Finished!'if__name__=='__main__':path=WORKING_PATHmanage(index=path)

代码

⑨ 如何用python批量改文件名

首先你要有一个遍历目录的方法

之前帮别人筛文件写的, 没优化~

#遍历目录过滤指定类型和大小的文件defwalkDir(file_dir,format=None,size=0):tmp_list=[]file_list=os.listdir(file_dir)forfileinfile_list:path=os.path.join(file_dir,file)ifos.path.isdir(path):#目录递归tmp_list+=walkDir(path,format,size)else:#过滤文件类型大小ifformat==None:ifsize==0:tmp_list.append(path)elifos.path.getsize(path)>=1024*size:tmp_list.append(path)elifos.path.splitext(file)[-1][1:]==format:ifsize==0:tmp_list.append(path)elifos.path.getsize(path)>=1024*size:tmp_list.append(path)returntmp_list

不过, 鉴于目录文件可能加多, 建议根据下面的方法, 做成生成器

defwalk_all_gen(f_path):file_list=os.listdir(f_path)foriinfile_list:full_path=os.path.join(f_path,i)ifos.path.isdir(full_path):#这里进行递归,py版本足够高的话,for循环可以简写为#yieldfromwalk_all_gen(full_path)foriinwalk_all_gen(full_path):yieldielse:#此处中断返回文件路径,判断什么的可在此处进行yieldfull_path

⑩ python 批量改文件名 以字典文本

import os

name = {}

with open("dict.txt","r") as A:

for eachline in A:

eachline = eachline.rstrip()

save = eachline.split(',')

name[save[0]] = save[1]

dir = './'

files = os.listdir(dir)

for file in files:

filename = os.path.splitext(file)[0]

sufix = os.path.splitext(file)[1]

if(sufix == '.mp3' and filename in name):

src1 = os.path.join(dir,file)

print name[filename]+sufix

src2 = os.path.join(dir,name[filename]+sufix)

os.rename(src1,src2)

这样吗?

未经允许不得转载:山九号 » python批量修改文件名|如何使用Python批量更改文件名的顺序

赞 (0)