想批量修改罗辑思维MP3的文件名?Python帮你解决!

我平时喜欢把《罗辑思维》的MP3放在手机里,方便路上听。但是,在网上下载的MP3有一点不好,它的名字会带有超长的网站名前缀,例如"【自在村www.zizaicun.com整理】44 世人都说共和好.mp3",造成的问题就是,我在手机上查看文件时,看到的画面是这样的:

当我想要选集的时候,根本不知道该选哪个好,我只能点开文件,等待标题字条慢慢的移动过来,我才能看到节目的名字,如下图所示。而其中等待时间长达12秒!简直无法忍受!有时候我为了选一集我没看过的节目,需要花两分钟来找。

对此,解决办法当然是有的,最简单粗暴的莫过于手动修改,但是对于我这么一个学计算机的人来说,这种方法未免太低级,另一种方法就是下个专门的收音机软件来听,但我又不想看广告,所以我最终决定用python来解决这个问题。

尝试一:修改文件名

我的第一个想法当然就是批量修改文件名了,这个很简单,网上教程很多,我就贴一下我的代码:

# coding=gbk

import os,re,sys

def RenameFiles(srcdir):
    srcfiles = os.listdir(srcdir)
    for srcfile in srcfiles:
        srcfilename = srcfile.partition('】') #我用】作为标示符,截取其之后的字符串作为新文件名
        destfile = srcfilename[2]
        os.rename(srcdir+os.sep+srcfile, srcdir+os.sep+destfile)

srcdir = "D:\\09录音\\罗辑思维2014"  #这里填windows上的路径名,一定要用RenameFiles(srcdir)

结果似乎不错,文件名全部正常了,但是,导入手机后发现仍然没有改变!原来苹果手机默认把Mp3TAG中的标题信息作为显示名称的第一选择,只有当没有tag标题时才会显示文件名。所以,第一次尝试以失败告终。

尝试二:Mutagen大显神威!

接下来的工作就是想办法让python能够修改mp3的tag信息,关于音频文件的处理,python专门有个第三方包mutagen可以借助。不过,在安装mutagen前,最好安装一下easy_install,方便以后对于第三方包的管理。

easy_install的安装很简单,百度一下就行,但是。。。我在安装时,运行了ez_setup.py之后,却显示了UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xd7 in position 1: ordinal not in range(128)这么一条错误信息,导致script文件夹无法安装,我在网上找了好久,总算找到了解决方法,详情请看这篇文章

装完easy_install后,只需要在cmd中输入easy_install mutagen就能直接安装Mutagen了。

接下来的一切就交给mutagen解决了,我的做法是直接把所有mp3文件的tag信息全部删除,代码如下:

#coding=gbk

import os,re,sys
from mutagen.mp3 import MP3
from mutagen.id3 import ID3

def DeleteTag(srcdir):
    srcfiles = os.listdir(srcdir)
    for srcfile in srcfiles:
        audio = ID3(srcdir+os.sep+srcfile)
        audio.delete()

srcdir = "D:\\09录音\\罗辑思维2014"

DeleteTag(srcdir)

大功告成!最后把文件导入手机,便能很顺利的看到这个界面了~有没有比之前的清爽很多~~

时间: 2024-08-08 09:24:50

想批量修改罗辑思维MP3的文件名?Python帮你解决!的相关文章

一个批量修改文件夹中文件名的命令

1. 只修改当前目录下的文件 [root]# rename -s  \.png  \_iphone.png  * 这个是修改目录下 的所有文件名,加入一个后缀 如: 1.png    ->>>   1_iphone.png 2. 递归修改当前目录下的所有子文件夹 [root]# find ./ -name  "*.png" | xargs  -I {} rename -s \.png  \_iphone.png  {} 如: 2.png    ->>>

python windows下批量修改文件名

经常会下载一些资料和学习视频,往往这些资料名称很多,想批量修改又很不方便,刚好用python写一个修改文件名的小程序. windows下安装python这个就不多说了,直接下载安装程序安装即可.https://www.python.org/downloads/ 3.x 2.x 都可以 我这个程序,是利用正则表达式的方式,针对一些比较偏的文件名进行过滤修改.没有针对子目录修改,大家可以自己行加以利用修改. rename-input.py #!/usr/bin/env python #coding:

python批量修改指定目录文件名

这小例子只要是说明用python怎么批量修改指定目录的文件名: 记得要把脚本跟修改的文件放在同一个目录下 #encoding:utf-8 import os import sys files = os.listdir('D:\\1') #路径可以自己 for name in files: a = os.path.splitext(name) if a[1] == '.txt': #txt可以自己手动修改成你想改的文件名 newname = a[0]+'.py' #.py也是可以修改 print

批量修改vss工作目录

vss作为源代码版本控制工具,可以针对不同的文件夹设置不同的本地工作目录,这样可以方便我们不同的个性化需求.但是往往实际情况是,我们设置了不同的工作目录,后来却发现导致引用混乱,每个人每次获取项目文件都需要重新修改一边引用,才可以重新编译成功.这我们才知道只应该针对完全独立的不同项目才有必要设置不同的工作目录.这时候我们往往想批量修改一下vss的工作目录,但是却发现子目录并没有跟着做相应的更改.那我们怎么办呢?    由于vss将用户的配置都保存在服务器上,所以我们可以在服务器上找到users下

python批量修改文件名

python批量修改文件名 #coding:utf-8 import os # 列出当前目录的所有文件 files = os.listdir('.') for filename in files: # 分割文件名和后缀名 portion = os.path.splitext(filename) # 比较后缀名 if portion[1] == ".mp3": # 修改后缀名 newname = portion[0] + ".m4a" os.rename(filena

如何用python从文中获取文件名再用正则表达式批量修改文件名

第零步:问题的提出 我在网上购买了星火英语的六级晨读美文100篇(六级早已高分飘过,不过很喜欢这些文章,买来重新品味),但是发现其文章的命名都为01.txt或10.txt等.为了便于检索需要修改文件名称. 第一步:从文件中取出文件名. 我发现txt文件的第一行为文件名,格式为如:Passage 3. Three Passions I Have Lived for, 后面还有几个换行符.写下如下代码进行第一步修改: import os x = 1 while x < 101: if x < 10

Python批量修改一个目录文件名

#!/usr/bin/env python # -*- coding:utf-8 -*- import re  import os import time # str.split(string) 分割字符串 # '连接符'.join(list) 将列表组成字符串 def change_name(path): global i if not os.path.isdir(path) and not os.path.isfile(path): return False if os.path.isfil

Python批量修改文件名-后缀

LyncLynn用途: 批量修改文件格式,文件名后缀. #Version: V1.0 #Author:lynclynn #Description:Change the filename #CreateDate:20151130 #UpdateDate: # -*- coding: UTF-8 -*- import os #列出当前目录(E:\Python\Code)下所有的文件 files =os.listdir("E:\Python\Code") #分离文件名字和后缀 for fil

Python 批量修改文件名

最近下载了几部美剧(越狱.迷失.权利的游戏......),每集文件名都好长好长..想改短一些,但一个一个改太累了,于是写了个脚本来实现批量修改: 修改前文件名: 修改后文件名: 代码实现: #encoding=utf-8 import os def rename(path,newname): # 获取path目录下的所有文件名和目录名 filenames = os.listdir(path)for filename in filenames: # 判断是文件还是目录 if os.path.isd