文件大小及其内容的差异

时间:2019-11-09 00:38:52

标签: python

为什么文件的大小与读取文件后返回的字节对象的大小有区别?

print(os.path.getsize(filepath))

f=open(filepath,'rb')
contents=f.read()
print(sys.getsizeof(contents))

1 个答案:

答案 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