讨厌下载电影和电视剧文件名中的多余字符(如网址和广告字样),,搞得文件名好长,可以使用下面的Python代码,自行修改即可.

  1. #!\usr\bin\env python
  2. # -*- coding: utf-8 -*-
  3. # Author: 吴徐平
  4. # FileName: RefineFileName.py
  5. # Function:
  6. # 下载的电影电视文件名太长,
  7. # 常常含有多余的字符,如'中英双字幕',
  8. # 可以使用本Python代码去掉
  9. # Using python 2.7.X,win xp sp3
  10. import sys
  11. import os
  12. import re
  13. # 文件夹目录列表
  14. FileDirectoryList=[\
  15. u"E:\\电视电影\\都市侠盗.Leverage",\
  16. u"E:\\电视电影\\犯罪心理.Criminal.Minds",\
  17. u"E:\\电视电影\\海军罪案调查处.NCIS",\
  18. u"E:\\电视电影\\警察世家.Blue.Bloods"\
  19. ]
  20. #文件名开头处是否需要添加的字符串
  21. #不需要添加字符时,留空(或空白)字符来表示
  22. AddStringList=[\
  23. u'Leverage',\
  24. u'Criminal.Minds',\
  25. u'NCIS.',\
  26. u'Blue.Bloods.'
  27. ]
  28. # 文件名中必须去掉的字符
  29. MustReplaceStringList=[\
  30. u'都市侠盗',\
  31. u'犯罪心理',\
  32. u'海军罪案调查处',\
  33. u'警察世家',\
  34. u'人人影视',\
  35. u'SFiles',\
  36. u'YYeTs',\
  37. ]
  38. # 去掉所有不必要的字符
  39. NewString=u'';
  40. # 自定义重命名文件的函数
  41. def RenameFileName(OldFileName,NewFileName):
  42. oldpath,oldfn = os.path.split(OldFileName)
  43. newpath,newfn = os.path.split(NewFileName)
  44. print(oldpath.encode('ascii','ignore'))
  45. os.rename(OldFileName, NewFileName)
  46. #print (oldfn.encode('ascii','ignore')+'  -->  '+newfn.encode('ascii','ignore'))
  47. #正则表达式替换,最多一次,忽略大小写
  48. def StringRegexReplace(pattern,repl,string):
  49. return  re.sub(pattern, repl, string, count=1, flags=re.I)
  50. # 循环#硬盘的电影电视剧所有目录下的文件
  51. for FileDirectory in FileDirectoryList:
  52. FileNamesList=os.listdir(FileDirectory)
  53. # 循环重新命名文件
  54. for filenamei in FileNamesList:
  55. # 首先去掉文件名中的空格字符
  56. RefinedFileName=filenamei.replace(u' ',NewString)
  57. # 循环必须去掉的文件名列表
  58. for MustReplaceString in MustReplaceStringList:
  59. RefinedFileName=RefinedFileName.replace(MustReplaceString,NewString)
  60. #去掉录制信息
  61. RefinedFileName=StringRegexReplace(u'(?<=[\.\-_])[^.]*rip(?=[\.\-_])','',RefinedFileName)
  62. RefinedFileName=StringRegexReplace(u'(?<=[\.\-_])xvi[^.]*(?=[\.\-_])','',RefinedFileName)
  63. #去掉分辨率
  64. RefinedFileName=StringRegexReplace('\d{1,4}X\d{1,4}','',RefinedFileName)
  65. #去掉[*]里面的所有内容
  66. RefinedFileName=StringRegexReplace(u'\[.*\]','',RefinedFileName)
  67. #去掉网址
  68. RefinedFileName=StringRegexReplace(u'www\..*\.((com)|(net)|(cn)|(org))','',RefinedFileName)
  69. #去掉字幕(组)的字样
  70. RefinedFileName=StringRegexReplace(u'(?<=[\.\-_])[^.]*字幕组?','',RefinedFileName)
  71. #去掉出品和作品字样
  72. RefinedFileName=StringRegexReplace(u'(?<=[\.\-_])[^.]*[出作]品','',RefinedFileName)
  73. #去掉开头的点.下划线_连接符-等
  74. RefinedFileName=StringRegexReplace(u'^[._\-]','',RefinedFileName)
  75. # 经常出现两个点以上,直接替换成一个点
  76. RefinedFileName=RefinedFileName.replace(u'...',u'.')
  77. RefinedFileName=RefinedFileName.replace(u'..',u'.')
  78. # 可以重新命名了
  79. OldFileName=os.path.join(FileDirectory,filenamei)
  80. NewFileName=os.path.join(FileDirectory,RefinedFileName)
  81. RenameFileName(OldFileName,NewFileName)
  82. ####下面的代码在文件头添加字符串
  83. #判断是否已经添加了字符串
  84. def HasAddString(AddString0,FileNameString0):
  85. if (len(AddString0.strip())<1):#AddString0为空字符不需要再添加任何字符了
  86. print('Empty AddString,No need to add to : '+ FileNameString0.encode('ascii','ignore'))
  87. return True
  88. else:
  89. AddString=AddString0.strip().lower()
  90. FileNameString=FileNameString0.strip().lower()
  91. if(len(FileNameString)<=len(AddString)):
  92. return False
  93. else:
  94. if(FileNameString[0:(len(AddString)-1)]==AddString[0:(len(AddString)-1)]):
  95. return True
  96. else:
  97. return False
  98. DirCounter=0;
  99. # 循环#硬盘的电影电视剧所有目录下的文件
  100. for FileDirectory in FileDirectoryList:
  101. FileNamesList=os.listdir(FileDirectory)
  102. AddString =AddStringList[DirCounter]
  103. DirCounter=DirCounter+1
  104. # 循环重新命名文件
  105. for filenamei in FileNamesList:
  106. #已经加过的文件名不再添加字符了
  107. if HasAddString(AddString,filenamei):
  108. print(filenamei.encode('ascii','ignore')+' : ALready Added Header String!')
  109. else:
  110. # 首先连接字符串
  111. RefinedFileName=AddString+filenamei
  112. # 可以重新命名了
  113. OldFileName=os.path.join(FileDirectory,filenamei)
  114. NewFileName=os.path.join(FileDirectory,RefinedFileName)
  115. RenameFileName(OldFileName,NewFileName)
  116. print(filenamei.encode('ascii','ignore')+' :  Add Header String, OK!')

对文件名的修改有特殊要求的,可以将StringRegexReplace函数用上.

下面的电视剧文件名看起来舒服多了:

看看文件名是不是清爽许多.....

最新文章

  1. iOS下Audio自动播放(Autoplay)音乐
  2. Excel 点滴积累
  3. mvc ajax csrf
  4. zabbix 监控MySQL
  5. Activity has leaked window that was originally added -界面退出时未关闭对话框异常 android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? -
  6. php如何妩媚地生成执行的sql语句
  7. [Spring] - 读写分离
  8. oracle imp导入库到指定表空间
  9. HDU 5294 Tricks Device 最短路+最大流
  10. java中参数传递
  11. JetBRAINS 系列注册机
  12. 95秀-异步http请求完整过程
  13. OS X EI Capitan 安装mysql-5.7.9
  14. GridView 翻页 索引超出范围
  15. Mybatis的原始dao开发方法
  16. oracle存储过程和存储函数&amp;触发器
  17. 利用Vmware 创建Linux虚拟机的方法
  18. ls(ll)排序问题
  19. nodejs+websocket聊天工具
  20. POJ 2676 Sudoku (DFS)

热门文章

  1. maven2 + tomcat6 + eclipse集成配置
  2. java工具类系列 (四.SerializationUtils)
  3. IntelliJ IDEA集成svn
  4. 想要风投被你的融资 PPT 打动吗?别忘了你其实就是在想方设法卖出自己公司的部分股权
  5. 07-语言入门-07-A Famous Music Composer
  6. Ios tab Bar 使用方法
  7. LingPipe-TextClassification(文本分类)
  8. [HDOJ1811]Rank of Tetris(并查集、拓扑排序)
  9. C# 反编译-Reflector 反混淆-De4Dot 修改dll/exe代码-reflexil
  10. hdu 1243 反恐训练营(dp 最大公共子序列变形)