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

作者:shichen2014 时间:2022-08-17 16:17:59 

本文实例讲述了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,文件名,字符,方法
0
投稿

猜你喜欢

  • asp如何做一个专门显示文本文件的页面?

    2010-07-12 19:04:00
  • python正则实现提取电话功能

    2022-04-30 03:32:46
  • python禁用键鼠与提权代码实例

    2022-12-11 11:54:59
  • 使用Pyhton集合set()实现成果查漏的例子

    2023-10-20 17:49:00
  • Python发送邮件实现基础解析

    2022-01-28 10:33:22
  • python中pandas.read_csv()函数的深入讲解

    2023-12-27 00:10:32
  • Python 函数简单易理解版

    2023-02-17 21:10:47
  • php在线打包程序源码

    2024-05-11 09:48:47
  • Python+OpenCV解决彩色图亮度不均衡问题

    2023-02-08 23:14:53
  • 在EF中使用MySQL的方法及常见问题

    2024-01-28 11:22:03
  • Python中使用tkFileDialog实现文件选择、保存和路径选择

    2022-02-17 09:35:32
  • 如何将pytorch模型部署到安卓上的方法示例

    2023-03-15 15:12:12
  • python实现kNN算法

    2023-01-24 13:58:06
  • Vue状态管理之使用Pinia代替Vuex

    2024-05-09 15:12:12
  • MySQL索引下推详细

    2024-01-18 10:01:07
  • Web2.0视觉风格进化论 之二

    2007-11-03 20:10:00
  • 网站中文字的视觉设计

    2008-04-16 13:35:00
  • Python基于Google Bard实现交互式聊天机器人

    2022-12-14 22:05:20
  • python实现图像识别的示例代码

    2022-09-11 04:48:40
  • 10分钟搭建自己的Git仓库

    2023-05-18 21:10:19
  • asp之家 网络编程 m.aspxhome.com