2

昨日、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'}

誰でもそれを取り除く方法を知っていますか?

ところで、それは私が現在試したすべての音楽に起こります。

4

2 に答える 2

4

rstrip('\x00')ファイルを読み取る行に次を追加します。

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

例:

>>> 'abc\x00\x00\x00\x00'.rstrip('\x00')
'abc'
于 2012-06-01T12:04:46.490 に答える
1

固定フィールド幅 (30) を読み取っていて、構造体がフィールドにヌル (\x00) を埋め込んでいます。

.strip('\x00') などを使用できると思います

   title   = fp.read(30).strip('\x00')
   artist  = fp.read(30).strip('\x00')
   album   = fp.read(30).strip('\x00')
于 2012-06-01T12:11:49.917 に答える