gpt4 book ai didi

python - 为什么 sys.getsizeof 不等于 os.path.getsize?

转载 作者:行者123 更新时间:2023-11-28 22:32:25 29 4
gpt4 key购买 nike

这个问题可能看起来很傻,但是,我有一个包含以下内容的 /tmp/size.txt:

hello

os.path.getsize('/tmp/size.txt')6 但当我这样做时:

sys.getsizeof(b'hello')
# OR
sys.getsizeof(bytes(bytearray('hello')))
# OR
sys.getsizeof(bytes('hello'))

它返回 42

os.path.getsizesys.getsizeof 有什么区别?

最佳答案

两者在python中不兼容。 os.path.getsize 给出文件的大小,而 sys.getsizeof 给出对象的大小。

文件是 6 个字节,而不是 5 个字节,因为有一个行尾(在 Windows 上它可能是 7 个字节)。如果您使用的是 C,那么“hello”将是 6 个字节,因为二进制零 '\0' 标记字符串的结尾。如果您使用另一种语言,那么它也会有自己的繁文缛节内存开销。

数据占用的内存(通常)小于对象占用的内存。对象将包含有关数据的其他信息,例如其大小和位置。这是您为使用高级语言付出的代价。

关于python - 为什么 sys.getsizeof 不等于 os.path.getsize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40931426/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com