0

I'm trying to write a program to get the artist and album from mp3 files. A simple test run on the Alice in Chanins song Rooster yielded this result -> b'Rooster\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
I set read to read(20) and if you count Rooster plus all the \x00s you'll see that it 20, I'm confused because that chould be 20 bytes and \x00 is 4 bytes. I need to be able to tell the program to stop building the artist string after it hits \x00, how can represent that? Thanks.

2
Contributors
2
Replies
20
Views
3 Years
Discussion Span
Last Post by lewashby
0

\x00 is byte, not 4, you can strip those with .rstrip('\x00')

>>> b'Rooster\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
'Rooster\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>> _.rstrip('\x00')
'Rooster'
>>> 

Edited by pyTony

0

I need to make sure that file.read() stops after hitting '\x00' I tried a while loop but it isn't working. Also, does file.read() step one byte forward each time through a loop or do I need to manually move the pointer? Thanks.

#!/usr/bin/env python3

import sys

file = sys.argv[1]
f = open(file, 'rb')

f.seek(-125, 2)
artist = f.read()
char = f.read()
while char is not '\x00':
    char = f.read(1)
    artist = artist + f.read()
print(artist)

f.close()
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.