为什么文件的大小与读取文件后返回的字节对象的大小有区别?
print(os.path.getsize(filepath))
f=open(filepath,'rb')
contents=f.read()
print(sys.getsizeof(contents))
答案 0 :(得分:6)
sys.getsizeof()
返回contents
分配的内存大小。请注意,这不仅返回文件的内容,还返回方法标头,bytes
数据结构中的各个内部字段,等等。
您可以使用其他数据类型进行演示。您可能希望一个简单的浮点数为4或8个字节,但是
>>> sys.getsizeof(4.5)
24
其余字节是数据结构的类信息,属性,指针和方法标头之类的开销。
您会注意到len(contents) == os.path.getsize(filepath)
-bytes
对象包含的字节数 -与预期的完全相同:
>>> print(os.path.getsize(filepath))
153
>>> f = open(filepath, 'rb')
>>> contents = f.read()
>>> type(contents)
<class 'bytes'>
>>> sys.getsizeof(contents)
186
>>> len(contents)
153