python扫描mp3元数据后删除不需要的字符

时间:2012-06-01 12:02:12

标签: python mp3 metadata

昨天我正在寻找一种扫描mp3元数据的方法,我在互联网上找到了这段代码

def getID3(filename):
    fp = open(filename, 'r') 
    fp.seek(-128, 2)
    fp.read(3) # TAG iniziale
    title   = fp.read(30)
    artist  = fp.read(30) 
    album   = fp.read(30) 
    fp.close()
    return {'title':title, 'artist':artist, 'album':album}

它完全有效,除了问题之外,每次我使用它时,这个---> \x00< ---出现在标题,专辑或艺术家的末尾。例如;

>>> import getid as id
>>> import os
>>> music = 'D:/Muzic'
>>> os.chdir(music)
>>> meta = id.getID3('04 - Mayday Parade - Your Song.mp3')
>>> meta
{'album': 'Tales Told By Dead Friends\x00\x00\x00\x00', 'artist': 'Mayday Parade\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'title': 'Your Song\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'}

任何人都知道如何摆脱它?

顺便说一下,它发生在我目前尝试的所有音乐中。

2 个答案:

答案 0 :(得分:4)

rstrip('\x00')添加到您阅读文件的行:

fp.read(30).rstrip('\x00')

示例:

>>> 'abc\x00\x00\x00\x00'.rstrip('\x00')
'abc'

答案 1 :(得分:1)

您正在读取固定的字段宽度(30),并且结构使用null(\ x00)填充字段。

我认为你可以使用.strip('\ x00')例如

   title   = fp.read(30).strip('\x00')
   artist  = fp.read(30).strip('\x00')
   album   = fp.read(30).strip('\x00')