Python 3: читать файл в режиме 'rb' как Python 2 - PullRequest
0 голосов
/ 30 мая 2020

Я работаю с некоторыми файлами midi и более старой библиотекой Python 2, которая преобразует файлы midi в файлы wav . Раньше Python 2 считывали файлы в режиме rb как необработанные строки, содержащие байтовую информацию, например:

'MThd\x00\x00\x00'

Python 3, напротив, считывает эти данные как байты:

b'MThd\x00\x00\x00'

Для справки: полный образец midi-файла, читаемый Python3, печатается следующим образом:

b'MThd\x00\x00\x00\x06\x00\x01\x00\x05V"MTrk\x00\x00\x00\x1d\x00\xffQ\x03\x07\xa1 \x00\xffX\x04\x04\x02\x18\x08\x82\x93P\xffX\x04\x01\x00\x18\x08\x01\xff/\x00MTrk\x00\x00\x00-\x00\xff\x03\x02p1\x00\xc0\x00\x00\x90<\x0f\xa2:<\x00\xa2:>\x0f\xa2:>\x00\xa2:@\x0f\xa2:@\x00\xa2:A\x0f\xa2:A\x00\x01\xff/\x00MTrk\x00\x00\x00-\x00\xff\x03\x02p2\x00\xc1\x00\x00\x91@\x0f\xa2:@\x00\xa2:A\x0f\xa2:A\x00\xa2:C\x0f\xa2:C\x00\xa2:E\x0f\xa2:E\x00\x01\xff/\x00MTrk\x00\x00\x00\x1d\x00\xff\x03\x02tr\x00\xc2\x00\x00\x920\x0f\xa2:0\x00\xe7.$\x0f\xa2:$\x00\x01\xff/\x00MTrk\x00\x00\x00M\x00\xff\x03\x02no\x00\xc3\x00\x00\x93\x08\x04\x88N\x08\x00\x99l\t\x04\x88N\t\x00\x99l\n\x04\x88N\n\x00\x99l\x0b\x04\x88N\x0b\x00\x99l\x0c\x04\x88N\x0c\x00\x99l\r\x04\x88N\r\x00\x99l\x0e\x04\x88N\x0e\x00\x99l\x0f\x04\x88N\x0f\x00\x01\xff/\x00'

Есть ли способ вернуть опцию чтения 'rb' Python 3 те же данные, возвращаемые параметром чтения Python 2 'rb'? Любая помощь по этому вопросу будет принята с благодарностью!

...