python实现去除下载电影和电视剧文件名中的多余字符的方法
2023-06-13 09:15:46 时间
本文实例讲述了python实现去除下载电影和电视剧文件名中的多余字符的方法,是一个非常实用的技巧,分享给大家供大家参考。具体如下:
有时候我们讨厌下载电影和电视剧文件名中的多余字符(如网址和广告字样),搞得文件名好长!不便于查看,这时候就可以使用下面的Python代码,自行修改即可.
具体实现代码如下:
#!\usr\bin\envpython #-*-coding:utf-8-*- #Author:吴徐平 #FileName:RefineFileName.py #Function: #下载的电影电视文件名太长, #常常含有多余的字符,如"中英双字幕", #可以使用本Python代码去掉 #Usingpython2.7.X,winxpsp3 importsys importos importre #文件夹目录列表 FileDirectoryList=[\ u"E:\\电视电影\\都市侠盗.Leverage",\ u"E:\\电视电影\\犯罪心理.Criminal.Minds",\ u"E:\\电视电影\\海军罪案调查处.NCIS",\ u"E:\\电视电影\\警察世家.Blue.Bloods"\ ] #文件名开头处是否需要添加的字符串 #不需要添加字符时,留空(或空白)字符来表示 AddStringList=[\ u"Leverage",\ u"Criminal.Minds",\ u"NCIS.",\ u"Blue.Bloods." ] #文件名中必须去掉的字符 MustReplaceStringList=[\ u"都市侠盗",\ u"犯罪心理",\ u"海军罪案调查处",\ u"警察世家",\ u"人人影视",\ u"SFiles",\ u"YYeTs",\ ] #去掉所有不必要的字符 NewString=u""; #自定义重命名文件的函数 defRenameFileName(OldFileName,NewFileName): oldpath,oldfn=os.path.split(OldFileName) newpath,newfn=os.path.split(NewFileName) print(oldpath.encode("ascii","ignore")) os.rename(OldFileName,NewFileName) #print(oldfn.encode("ascii","ignore")+"-->"+newfn.encode("ascii","ignore")) #正则表达式替换,最多一次,忽略大小写 defStringRegexReplace(pattern,repl,string): returnre.sub(pattern,repl,string,count=1,flags=re.I) #循环#硬盘的电影电视剧所有目录下的文件 forFileDirectoryinFileDirectoryList: FileNamesList=os.listdir(FileDirectory) #循环重新命名文件 forfilenameiinFileNamesList: #首先去掉文件名中的空格字符 RefinedFileName=filenamei.replace(u"",NewString) #循环必须去掉的文件名列表 forMustReplaceStringinMustReplaceStringList: RefinedFileName=RefinedFileName.replace(MustReplaceString,NewString) #去掉录制信息 RefinedFileName=StringRegexReplace(u"(?<=[\.\-_])[^.]*rip(?=[\.\-_])","",RefinedFileName) RefinedFileName=StringRegexReplace(u"(?<=[\.\-_])xvi[^.]*(?=[\.\-_])","",RefinedFileName) #去掉分辨率 RefinedFileName=StringRegexReplace("\d{1,4}X\d{1,4}","",RefinedFileName) #去掉[*]里面的所有内容 RefinedFileName=StringRegexReplace(u"\[.*\]","",RefinedFileName) #去掉网址 RefinedFileName=StringRegexReplace(u"www\..*\.((com)|(net)|(cn)|(org))","",RefinedFileName) #去掉字幕(组)的字样 RefinedFileName=StringRegexReplace(u"(?<=[\.\-_])[^.]*字幕组?","",RefinedFileName) #去掉出品和作品字样 RefinedFileName=StringRegexReplace(u"(?<=[\.\-_])[^.]*[出作]品","",RefinedFileName) #去掉开头的点.下划线_连接符-等 RefinedFileName=StringRegexReplace(u"^[._\-]","",RefinedFileName) #经常出现两个点以上,直接替换成一个点 RefinedFileName=RefinedFileName.replace(u"...",u".") RefinedFileName=RefinedFileName.replace(u"..",u".") #可以重新命名了 OldFileName=os.path.join(FileDirectory,filenamei) NewFileName=os.path.join(FileDirectory,RefinedFileName) RenameFileName(OldFileName,NewFileName) ####下面的代码在文件头添加字符串 #判断是否已经添加了字符串 defHasAddString(AddString0,FileNameString0): if(len(AddString0.strip())<1):#AddString0为空字符不需要再添加任何字符了 print("EmptyAddString,Noneedtoaddto:"+FileNameString0.encode("ascii","ignore")) returnTrue else: AddString=AddString0.strip().lower() FileNameString=FileNameString0.strip().lower() if(len(FileNameString)<=len(AddString)): returnFalse else: if(FileNameString[0:(len(AddString)-1)]==AddString[0:(len(AddString)-1)]): returnTrue else: returnFalse DirCounter=0; #循环#硬盘的电影电视剧所有目录下的文件 forFileDirectoryinFileDirectoryList: FileNamesList=os.listdir(FileDirectory) AddString=AddStringList[DirCounter] DirCounter=DirCounter+1 #循环重新命名文件 forfilenameiinFileNamesList: #已经加过的文件名不再添加字符了 ifHasAddString(AddString,filenamei): print(filenamei.encode("ascii","ignore")+":ALreadyAddedHeaderString!") else: #首先连接字符串 RefinedFileName=AddString+filenamei #可以重新命名了 OldFileName=os.path.join(FileDirectory,filenamei) NewFileName=os.path.join(FileDirectory,RefinedFileName) RenameFileName(OldFileName,NewFileName) print(filenamei.encode("ascii","ignore")+":AddHeaderString,OK!")
对文件名的修改有特殊要求的,可以将StringRegexReplace函数用上.
运行本文实例后可以看到下面的电视剧文件名看起来就舒服多了:
希望本文所述实例对大家的Python程序设计能有所帮助。
相关文章
- pycharm编码设置为utf-8._python字符编码使用ascii编码对么
- 如何为pycharm配置Python解释器_pycharm选择python解释器
- python中矩阵的转置怎么写_Python 矩阵转置的几种方法小结
- python实现矩阵的转置_Python实现矩阵转置的方法分析
- python格式化转换_Python进制转换format格式化[通俗易懂]
- 哪些软件是python编写出来的_用Python编程需要什么软件?
- python判断linux中文件是否存在_Python判断文件是否存在的三种方法
- python海龟作图红绿灯_海龟作图—用Python绘图
- Miniconda——搭建Python开发环境的最优解
- 【说站】python字符串如何访问字符
- 简述Python特点_python优缺点
- python程序化交易实例-用 Python 实现你的量化交易策略「建议收藏」
- Python列表推导式(2)_Python自学第二十四节
- 《Python程序设计基础与应用(第2版)》课后习题参考答案
- Linux上的Python之旅(linux自带python)
- python-源管理 pip & conda详解编程语言
- Linux升级:升级Python到最新版本(linux升级python版本)
- 掌握Linux环境下的Python编程(linux执行python)
- 在Linux上学习Python——你的编程之路(linux学python)
- Python操作MySQL数据库的必备模块mysqlpython(mysql_python)
- go和python调用其它程序并得到程序输出