国产探花免费观看_亚洲丰满少妇自慰呻吟_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)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石家庄市| 泰州市| 驻马店市| 晋中市| 虞城县| 泌阳县| 景德镇市| 大余县| 望奎县| 永善县| 金平| 秦皇岛市| 腾冲县| 邛崃市| 高要市| 屏山县| 天峨县| 岳阳市| 孟州市| 商河县| 黄大仙区| 青龙| 宣恩县| 雷波县| 绥德县| 桦川县| 海兴县| 广宗县| 东兰县| 金门县| 霍邱县| 枣强县| 台江县| 普兰县| 冷水江市| 梁山县| 宜宾县| 尖扎县| 锡林浩特市| 额济纳旗| 南江县|