Python 3 - sys.getsizeof() 向文件添加 17 位

Python 3 - sys.getsizeof() adding 17 bits to file

import sys
import binascii

filename = ('terrain.png')
with open(filename, 'rb') as f:
    content = f.read()
binascii.hexlify(content)
x = sys.getsizeof(content)
print (x)

好的,这是我开始使用的代码,它在应该打印“333966”时打印“333983”。 它比应有的多了 17 个字节,我不确定为什么。我用 hex workshop 手动检查了图像大小。我需要为我正在编写的自定义包文件获取此图像的准确字节大小。图像文件大小将以十六进制形式列在文件结构之前的 header 中。我是 python 的新手,如果我犯了一些错误,我深表歉意。

sys.getsizeof returns Python 对象的大小,不是字节串中的字节数,也不是字节串的长度字符串,或元组的长度等。您只是在测量解释器的实现细节。 (例如,sys.getsizeof 甚至没有在 PyPy 中实现。)这将因类型而异:

>>> a = [1]*100
>>> len(a)
100
>>> sys.getsizeof(a)
432    
>>> b = b'1'*100
>>> len(b)
100
>>> sys.getsizeof(b)
117

如果你想知道字节数,因为你的 content 是一个 bytes 对象,你可以简单地使用 len(content).