Python bytearray并不像它应该的那样长

时间:2014-02-19 13:21:52

标签: python windows python-2.7 file-io

我正在尝试读取表示为原始字节文件的Android yuv图像。

f = open(self.fn)
self.yuvArray = bytearray(f.read())

我知道该文件包含720K字节,但self.yuvArray只有350K。 此外,在使用相同格式的多个文件尝试此操作后,所有文件都是720K字节长(在文件大小中验证,c#代码返回一个720k大小的数组),我注意到它们都是不同的大小,大约350K。

我试着看看它是否有某种压缩或某种东西找不到任何东西。 对我来说,获得正确的长度是至关重要的,无论它是否都存在,只是我看不到它。

如何将其读入720K大小的阵列?

1 个答案:

答案 0 :(得分:2)

以二进制模式(b)打开文件。

f = open(self.fn, 'rb')

否则,在Windows中,回车符,转换换行符,并且特定字节(26 == 0x1A)导致先前读取返回。

with open('testfile', 'wb') as f:
    f.write('\r\n')
with open('testfile', 'r') as f:
    assert f.read() == '\n' # converted

with open('testfile', 'wb') as f:
    f.write(''.join(chr(i) for i in range(256)))
with open('testfile', 'r') as f:
    assert len(f.read()) < 256  # len(..) == 26