python修改mp3文件的方法

本文实例讲述了python修改mp3文件的方法。分享给大家供大家参考。具体如下:

用这个程序修改后的mp3比原来要小一些了,因为一张图片被删除了,起到了给mp3″瘦身”的作用。在一些mp3中,每个都有一张400多k的图片,10几个mp3,就相当一个普通mp3文件的大小了。

# -*- coding: cp936 -*-
“””
将mp3文件中的id3v2.3部分去掉,以便在mp3机上播放
用法:mp3lcear [源mp3目录] [生成的mp3目录]
“””
import sys
import os
import string
import shutil
import struct
import thread
import threading
import time
mp3suffix = ‘mp3′
class process(threading.thread):
“””
简单地在运行的过程中显示进度
“””
def __init__(self,msg,sleeptime):
threading.thread.__init__(self)
self.msg = msg
self.running = true
self.sleeptime = sleeptime
def setpause(self,pause):
self.pause = pause
def setrunning(self,running):
self.running = running
def run (self):
while(self.running):
self.pause.wait()
print self.msg,
time.sleep(self.sleeptime)
def usage(code, msg=”):
“””
程序的使用方法
“””
print >> sys.stderr, __doc__
if msg:
print >> sys.stderr, msg
sys.exit(code)
def checkdir(argdir,create=false):
“””
检查目录是否存在,如果create为ture,则新建一个目录
“””
tempdir = none
if(not os.path.isdir(argdir)):
currentdir = os.path.abspath(os.curdir)
tempdir = os.path.join(currentdir,argdir)
if(not os.path.isdir(tempdir) and create):
os.mkdir(tempdir)
else:
usage(1,”目录”+argdir+”不存在”)
else:
tempdir = os.path.abspath(argdir)
return tempdir
def clearmp3(srcfile,destfile):
“””
修改mp3文件,并将其创建到destfile所指定的地址
“””
global process
srcfp = none
filesize = os.path.getsize(srcfile)
try:
srcfp = open(srcfile,’rb’)
head = srcfp.read(3)
if(head==’id3′):
srcfp.seek(3,1)
size = srcfp.read(4)
if(not len(size)==4):
print srcfile+’文件格式错误’
else:
size0 = struct.unpack(‘b’,size[0])[0]
size1 = struct.unpack(‘b’,size[1])[0]
size2 = struct.unpack(‘b’,size[2])[0]
size3 = struct.unpack(‘b’,size[3])[0]
headsize =(((size0&0x7f)