python修改文件:Python修改Mp3文件名称

  网上下载很多mp3歌曲都是用时间ID比如20091003003.mp3这样方式作为歌曲名称非常混乱!下载后经常需要修改mp3名字这里我发个我以前用Python写专门用来修改那些网上下载mp3歌曲后名称不正确时候使用该使用思路方法

  ModyMp3FileInfo(r'E:\音乐\12345.mp3')就是字典和列表使用方法!代码如下:

#!修改下载Mp3文件名称为正确Mp3文件
 def ModyMp3FileInfo(filename):  
   mp3Id3V1 = {
     "tag":{"valuepos":(0,3),"value":""},
     "SongName":{"valuepos":(3,33),"value":""},
     "SongPeople":{"valuepos":(33,63),"value":""},
     "Zj":{"valuepos":(63,93),"value":""},
     "Year":{"valuepos":(93,97),"value":""},
     "Bak":{"valuepos":(97,125),"value":""}
     }
   try:
     f = open(filename,'rb')
     f.seek(-128,2)
     sdata = f.read(3)
      sdata  'TAG':
       f.seek(-128,2)
       sdata = f.read(128)  
       for tag,subitem in mp3Id3V1.items:
         subitem["value"] = sdata[subitem["valuepos"][0]:subitem["valuepos"]
[1]].replace('\00','').strip
         pr '%s='%tag,'%s'%subitem["value"],'\n'  
       f.close  
       import os
        mp3Id3V1["SongName"]["value"]!='':
         test = [os.path.dirname(filename),'\\']
         test.append(mp3Id3V1["SongName"]["value"])
         test.append('.mp3')
         filename = ''.join(test)
         pr filename
          os.path.exists(filename):
           test = ['Filename ',filename,' Has Existed']
           pr ''.join(test)
         :
           try:
             os.rename(filename,filename)
           except WindowsError,e:
              e.winerror:
               pr 'Mody filename failed ,maybe the file is inuse'
             :
               pr 'UnKnown error'
     :
       pr 'Is not a MP3 file'
   except IOError:
     pr 'Open file failed'


  但是上面这个代码只是针对歌曲本身记录了mp3名字信息才能够正确修改名字但是某些时候文件中并没有记录这些信息这些数据信息都记录在MP3Id3V1数据段中所以这里再给个直接写入信息到这个数据段中代码:

writeMp3Header = {
   "SongName":"",
   "SongPeople":"",
   "ZhuanJi":"",
   "Year":"",
   "Bak":""
   }
 def Mp3Header(mp3file):
   mp3Id3V1 = {    
     "SongName":-125,
     "SongPeople":-95,
     "ZhuanJi":-65,
     "Year":-35,
     "Bak":-31
     }
   tags = ['SongName','SongPeople','ZhuanJi','Bak']
   f = open(mp3file,'r+')
   try:
     f.seek(-128,2)
     try:
       tempstr = f.read(3)
        tempstr  'TAG':
         for tag,startPos in mp3Id3V1.items:
            writeMp3Header[tag] != '':
             f.seek(startPos,2)
              tag in tags:
                len(writeMp3Header[tag]) > 30: 
                 f.write(writeMp3Header[tag][:30])
               :
                 f.write(writeMp3Header[tag])
             pr startPos,tag,writeMp3Header[tag]
       :
         pr 'is not a mp3file'
     except IOError:
       pr 'read error'
   finally:
     f.close




  使用方式:

  writeMp3Header[SongName] = '测试歌曲名称'

  writeMp3Header[SongPeople] = '不得闲'

  writeMp3Header[ZhuanJi] = '专辑'

  writeMp3Header[Year] = '2009'

  writeMp3Header[Bak] = '备注测试'

  Mp3Header(r'E:\test.mp3')



Tags:  python文件 python删除文件 python修改文件名 python修改文件

延伸阅读

最新评论

发表评论