昨天我正在寻找一种扫描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'}
任何人都知道如何摆脱它?
顺便说一下,它发生在我目前尝试的所有音乐中。
答案 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')