这个问题可能看起来很傻,但是,我有一个/tmp/size.txt这样的内容:
hello
Run Code Online (Sandbox Code Playgroud)
并os.path.getsize('/tmp/size.txt')说6但是当我这样做时:
sys.getsizeof(b'hello')
# OR
sys.getsizeof(bytes(bytearray('hello')))
# OR
sys.getsizeof(bytes('hello'))
Run Code Online (Sandbox Code Playgroud)
它返回42。
是什么之间的区别os.path.getsize和sys.getsizeof?
两者在python中不兼容。 os.path.getsize给出文件的大小,而sys.getsizeof给出对象的大小。
由于行尾(在 Windows 上可能是 7 个字节),该文件是 6 个字节,而不是 5 个。如果您使用 C,那么“hello”将是 6 个字节,因为二进制零'\0'标记字符串的结尾。如果您使用另一种语言,那么它也会有自己的繁文缛节内存开销。
数据占用的内存(一般)小于对象占用的内存。对象将包含有关数据的其他信息,例如其大小和位置。这是您为使用高级语言付出的代价。
| 归档时间: |
|
| 查看次数: |
1134 次 |
| 最近记录: |