python实现去除下载电影和电视剧文件名中的多余字符的方法
admin
2023-07-31 02:12:50
0

本文实例讲述了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程序设计能有所帮助。

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...