首页 > 解决方案 > Python 3:像 Python 2 一样使用“rb”模式读取文件

问题描述

我正在使用一些 midi 文件和一个将 midi 文件转换为 wav 文件的旧 Python 2 库。过去,Python 2 使用rbmode 作为包含字节信息的原始字符串读取文件,例如:

'MThd\x00\x00\x00'

相比之下,Python 3 将该数据读取为字节:

b'MThd\x00\x00\x00'

作为参考,Python3 读取的完整示例 midi 文件打印如下:

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'

有没有办法让 Python 3 的“rb”读取选项返回与 Python 2 的“rb”读取选项返回的数据相同的数据?对此问题的任何帮助将不胜感激!

标签: pythonpython-3.xstringtypesencoding

解决方案


推荐阅读