国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python修改MP3文件的方法

2020-02-23 01:36:33
字體:
來源:轉載
供稿:網友

本文實例講述了Python修改MP3文件的方法。分享給大家供大家參考。具體如下:

用這個程序修改后的MP3比原來要小一些了,因為一張圖片被刪除了,起到了給MP3"瘦身"的作用。在一些mp3中,每個都有一張400多K的圖片,10幾個MP3,就相當一個普通MP3文件的大小了。

# -*- coding: cp936 -*-"""將MP3文件中的ID3V2.3部分去掉,以便在MP3機上播放用法:mp3lcear [源mp3目錄] [生成的mp3目錄]"""import sysimport osimport stringimport shutilimport structimport threadimport threadingimport timemp3suffix = 'mp3'class Process(threading.Thread):"""簡單地在運行的過程中顯示進度"""def __init__(self,msg,sleepTime):threading.Thread.__init__(self)self.msg = msgself.running = Trueself.sleepTime = sleepTimedef setPause(self,pause):self.pause = pausedef setRunning(self,running):self.running = runningdef 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, msgsys.exit(code)def checkDir(argDir,create=False):"""檢查目錄是否存在,如果create為Ture,則新建一個目錄"""tempDir = Noneif(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 tempDirdef clearMp3(srcFile,destFile):"""修改mp3文件,并將其創建到destFile所指定的地址"""global processsrcfp = Nonefilesize = 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)<<21) | ((size1&0x7f)<<14) | ((size2&0x7f)<<7) | (size3&0x7f))filesize = filesize - headSizedestfp = Nonetry:dataLen = 0destfp = open(destFile,'wb')srcfp.seek(headSize,1)data=srcfp.read(1024)while (data!= ''):destfp.write(data)data=srcfp.read(1024)except Exception,e:print '創建文件'+destFile+'錯誤',etry:if (destfp != None):destfp.closeexcept Exception,de:print deelse:print srcFile+'不需要修改 拷貝',try:shutil.copyfile(srcFile,destFile)except Exception, ce:print ceexcept Exception,oe:print '修改中出錯',oetry:if (srcfp != None):srcfp.close()except Exception,se:print deif __name__ == "__main__":if(len(sys.argv)<3):usage(1)global processsourceDir = checkDir(sys.argv[1])destDir = checkDir(sys.argv[2],True)print 'Mp3源目錄',sourceDirprint 'Mp3目的目錄',destDirprocess = Process('...',1)pause = threading.Event()process.setPause(pause)process.start()for filename in os.listdir(sourceDir):srcPath = os.path.join(sourceDir, filename)destPath = os.path.join(destDir, filename)if os.path.isfile(srcPath):print '開始處理 '+filename,tempfilename = filename.lower()if(not tempfilename.endswith(mp3suffix)):print filename+'不是一個mp3文件/n'else:pause.set()clearMp3(srcPath,destPath)pause.clear()print '結束 /n'pause.set()process.running = Falsesys.exit(0)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 色达县| 奉化市| 蓝田县| 绵竹市| 河津市| 泰安市| 合作市| 都安| 嘉荫县| 富裕县| 黔西县| 额尔古纳市| 郁南县| 文山县| 东乌珠穆沁旗| 深泽县| 库车县| 克东县| 丹巴县| 大悟县| 柳河县| 宜良县| 克拉玛依市| 吉木萨尔县| 深圳市| 乌鲁木齐市| 沅江市| 博乐市| 肥城市| 尚志市| 上高县| 鲁山县| 西华县| 洪洞县| 乌兰察布市| 会东县| 蒙阴县| 康定县| 田阳县| 宜川县| 如皋市|