繁体   English   中英

文件大小及其内容的差异

[英]Difference in size of a file and its contents

为什么文件大小与读取文件后返回的字节 object 大小有差异?

print(os.path.getsize(filepath))

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

sys.getsizeof()返回为contents分配的 memory 的大小。 请注意,这不仅返回文件的内容,还返回方法头、 bytes数据结构中的各种内部字段等。

您可以使用其他数据类型来证明这一点。 您会期望一个简单的浮点数为 4 或 8 个字节,但是

>>> sys.getsizeof(4.5)
24

剩下的字节是数据结构的 class 信息和属性以及指针和方法头等等的开销。

您会注意到len(contents) == os.path.getsize(filepath) - bytes object包含的字节- 与预期的完全相同:

>>> print(os.path.getsize(filepath))
153
>>> f = open(filepath, 'rb')
>>> contents = f.read()
>>> type(contents)
<class 'bytes'>
>>> sys.getsizeof(contents)
186
>>> len(contents)
153

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM