去除下载电影和电视剧文件名中的多余字符[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实现]的更多相关文章
- 解决osg路径与文件名中的中文字符问题
转至:http://blog.csdn.net/zhuqinglu/article/details/2064013 在打开或者保存一个osg模型的时候,经常遇到中文路径或者中文文件名的问题,此时会提示 ...
- 过滤Windows文件名中的非法字符
转载:http://blog.csdn.net/infoworld/article/details/42033097 场景: 1. 通常生成文件时需要一个文件名,而生成文件名的方式可能是通过用户输入的 ...
- 文件名中含有连续字符abc,相应文件中也含有字符串abc
find ./ -name '*abc*' -exec grep 'abc' {} -H \; find ./ -name '*abc*' | xargs -I '{}' grep abc {} -H ...
- Linux查看当前目录下文件名中包含指定字符的文件
find . -type f -name "edaijia* 结果:
- ajax成功返回数据中存在多余字符的处理
ajax里有需要判断反馈的字符串是否为“ok”,在浏览器里调试,看到返回的内容明明是“ok”,但是if(“ok”==data)判断为false,用alert打印内容也是ok,但是打印长度的时候却是3. ...
- 使用response.setHeader("Content-Disposition","attachment;filename="+fName)下载文件,中文文件名无法显示的问题
今天遇到这么一个情况,在Action代码中进行文件下载: ActionForm得到file_id,通过file_id进行数据库查询得到file_name以及服务器硬盘上的file_uri,其中file ...
- response.setHeader("Content-disposition","attachment;filename="+fileName) 下载时文件名中存在空格错误
最近在进行文件下载时发现一个问题,就是下面语句运行时,下载某些文件正常,下载某些文件异常,后来发现文件名中有空格的文件火狐浏览器是默认将文件名截断了的 response.setHeader(" ...
- 【.net】在ASP.NET中,IE与Firefox下载文件名中带中文汉字的文件,文件名乱码的问题
#问题:客户端为ie或Firefox,服务端为asp.net时,下载文件名中包含中文汉字时,下载下来的文件的文件名是乱码: #解决方案: 示例代码:下载名称中带汉字的文件: public void P ...
- 火狐浏览器下载文件中文乱码,文件名中的空格变加号("+")的问题
解决一下问题: 1.火狐浏览器下载文件,中文变乱码 2.IE浏览器下载文件,丢失文件扩展名或强制扩展名为".txt" 3.浏览器下载文件,文件名中的空格变成加号("+&q ...
随机推荐
- 【mysql的编程专题】触发器
类似tp里面的数据模型回调接口,在数据表增删改的前或后触发执行其他的预订的sql; 一个触发器要具备4要素: 1.监视地点 -- 要执行触发器的表 2.监视事件 -- 由什么DML事件来牵引 3.触发 ...
- pymongo 例子
import pymongo class dbUtil(object): def __init__(self, tablename='functional_testing'): con = pymon ...
- mvn 安装ojdbc6.jar
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion= - Dpackaging=jar -Dfile ...
- Qt源码分析之QObject
原文:http://blog.csdn.net/oowgsoo/article/details/1529284 我感觉oowgsoo兄弟写的分析相当透彻,赞! 1.试验代码: #include < ...
- 在屏幕上显示C盘根目录下的所有文件和文件夹
1 import java.io.File; //在屏幕上显示C盘根目录下的所有文件和文件夹 public class ListDemo { public static void main(Strin ...
- Retrofit所有知识场景汇总
https://futurestud.io/blog/retrofit-getting-started-and-android-client Retrofit Series Overview Gett ...
- The type sun.management.ManagementFactory is not visible
Eclipse默认将这些受访问限制的API设成了Error.解决方法:只要将Windows---Preferences---Java--Complicer---Errors/Warings里面的Dep ...
- epoll和poll效率差异
http://blog.163.com/sky20081816@126/blog/static/164761023201073033517435/ 百度“epoll和poll”
- ios UICollectionView滑动时操作
点开UICollectionViewDelegate,发现有@protocol UICollectionViewDelegate <UIScrollViewDelegate>. 所以只要实 ...
- ASCII 字符代码表