python实现去除下载电影和电视剧文件名中的多余字符的方法


Posted in Python onSeptember 23, 2014

本文实例讲述了python实现去除下载电影和电视剧文件名中的多余字符的方法,是一个非常实用的技巧,分享给大家供大家参考。具体如下:

有时候我们讨厌下载电影和电视剧文件名中的多余字符(如网址和广告字样),搞得文件名好长!不便于查看,这时候就可以使用下面的Python代码,自行修改即可.

具体实现代码如下:

#!\usr\bin\env python 
# -*- coding: utf-8 -*- 
# Author: 吴徐平 
# FileName: RefineFileName.py 
# Function:  
# 下载的电影电视文件名太长, 
# 常常含有多余的字符,如'中英双字幕', 
# 可以使用本Python代码去掉 
# Using python 2.7.X,win xp sp3 
 
import sys 
import os 
import re 
 
# 文件夹目录列表 
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''; 
 
# 自定义重命名文件的函数 
def RenameFileName(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'))    
 
#正则表达式替换,最多一次,忽略大小写 
def StringRegexReplace(pattern,repl,string): 
  return re.sub(pattern, repl, string, count=1, flags=re.I)  
 
# 循环#硬盘的电影电视剧所有目录下的文件 
for FileDirectory in FileDirectoryList:   
  FileNamesList=os.listdir(FileDirectory)   
  # 循环重新命名文件 
  for filenamei in FileNamesList:         
    # 首先去掉文件名中的空格字符 
    RefinedFileName=filenamei.replace(u' ',NewString) 
    # 循环必须去掉的文件名列表 
    for MustReplaceString in MustReplaceStringList: 
      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) 
 
####下面的代码在文件头添加字符串 
#判断是否已经添加了字符串 
def HasAddString(AddString0,FileNameString0): 
  if (len(AddString0.strip())<1):#AddString0为空字符不需要再添加任何字符了 
    print('Empty AddString,No need to add to : '+ FileNameString0.encode('ascii','ignore')) 
    return True 
  else:       
    AddString=AddString0.strip().lower() 
    FileNameString=FileNameString0.strip().lower() 
    if(len(FileNameString)<=len(AddString)): 
      return False 
    else: 
        if(FileNameString[0:(len(AddString)-1)]==AddString[0:(len(AddString)-1)]): 
          return True 
        else: 
          return False 
 
DirCounter=0; 
# 循环#硬盘的电影电视剧所有目录下的文件 
for FileDirectory in FileDirectoryList: 
  FileNamesList=os.listdir(FileDirectory) 
  AddString =AddStringList[DirCounter] 
  DirCounter=DirCounter+1   
  # 循环重新命名文件 
  for filenamei in FileNamesList:         
    #已经加过的文件名不再添加字符了 
    if HasAddString(AddString,filenamei): 
      print(filenamei.encode('ascii','ignore')+' : ALready Added Header String!') 
    else: 
      # 首先连接字符串 
      RefinedFileName=AddString+filenamei 
      # 可以重新命名了 
      OldFileName=os.path.join(FileDirectory,filenamei) 
      NewFileName=os.path.join(FileDirectory,RefinedFileName)  
      RenameFileName(OldFileName,NewFileName) 
      print(filenamei.encode('ascii','ignore')+' : Add Header String, OK!')

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

运行本文实例后可以看到下面的电视剧文件名看起来就舒服多了:

python实现去除下载电影和电视剧文件名中的多余字符的方法

希望本文所述实例对大家的Python程序设计能有所帮助。

Python 相关文章推荐
python 实现归并排序算法
Jun 05 Python
常用python数据类型转换函数总结
Mar 11 Python
Python collections模块实例讲解
Apr 07 Python
python实现寻找最长回文子序列的方法
Jun 02 Python
Python中logging.NullHandler 的使用教程
Nov 29 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
Nov 11 Python
Python箱型图处理离群点的例子
Dec 09 Python
Pytorch maxpool的ceil_mode用法
Feb 18 Python
如何在Django中使用聚合的实现示例
Mar 23 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
python中reload重载实例用法
Dec 15 Python
Python自动化爬取天眼查数据的实现
Jun 15 Python
Python中的类学习笔记
Sep 23 #Python
Python函数嵌套实例
Sep 23 #Python
Python中的自定义函数学习笔记
Sep 23 #Python
Python中的exec、eval使用实例
Sep 23 #Python
Python的高级Git库 Gittle
Sep 22 #Python
Python实现抓取网页并且解析的实例
Sep 20 #Python
跟老齐学Python之字典,你还记得吗?
Sep 20 #Python
You might like
奇怪的PHP引用效率问题分析
2012/03/23 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
php时间计算相关问题小结
2016/05/09 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
javascript中的location用法简单介绍
2007/03/07 Javascript
javascript贪吃蛇完整版(源码)
2013/12/09 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
详解vue组件通信的三种方式
2017/06/30 Javascript
深入理解es6块级作用域的使用
2019/03/28 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
javascript执行上下文、变量对象实例分析
2020/04/25 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
python的变量与赋值详细分析
2017/11/08 Python
详解Django rest_framework实现RESTful API
2018/05/24 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
Python docx库用法示例分析
2019/02/16 Python
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
爱普生美国官网:Epson美国
2018/11/05 全球购物
美国在线购物频道:Shop LC
2019/04/21 全球购物
Sql面试题
2013/03/20 面试题
咖啡厅创业计划书范本
2014/01/22 职场文书
心理健康教育制度
2014/01/27 职场文书
酒店中秋节活动方案
2014/01/31 职场文书
函授毕业个人自我评价
2014/02/20 职场文书
服务行业演讲稿
2014/09/02 职场文书
庆六一宣传标语
2014/10/08 职场文书
开幕式邀请函
2015/01/31 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
岗位职责范本大全
2015/02/26 职场文书