python2和python3中file.read()的行为

时间:2020-10-16 05:07:27

标签: python python-3.x python-2.7

我有一些代码从python 2转换为python 3(在我的示例中没有明显的区别,但已更改)。基本上,我的代码读取二进制音频文件。 相同原始音频文件的大小在读取后完全不同,我不知道为什么。主要区别在于其中一个程序在python 3.8中运行,而较旧的程序在2.7中运行。

Python 3代码:

    def __read_file(self, file):
        try:
            a_dir = os.path.join(TestContext().accuracy_dir,self._accuracy,"Audio") if \
                self._accuracy else TestContext().media_dir
            if "http://" in file:
                f = urllib.request.urlopen(file)
                a_buffer = f.read()
            else:
                if False == os.path.isabs(file):
                    file = os.path.join(a_dir, file)
                with open(file, mode='rb') as f:
                    a_buffer = f.read()

       
        except IOError as e:
            raise IOError('I/O error({0}): {1}'.format(e.errno, e.strerror))

        print("AUDIO BUFFER LENGTH", len(a_buffer))
        return a_buffer

Python 3结果:

AUDIO BUFFER LENGTH: 3977

Python 2结果:

AUDIO BUFFER LENGTH: 122400

我的python 2代码与urllib2而不是urllib完全相同。

此外,python 2方式也是正确的方式。我的音频文件应该很大。我不确定为什么它突然变小。

感谢您的帮助。

0 个答案:

没有答案
相关问题