这个问题可能看起来很愚蠢,但我有/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.getsize
和sys.getsizeof
之间有什么区别?
答案 0 :(得分:4)
这两个在python中不兼容。 os.path.getsize
给出文件的大小,而sys.getsizeof
给出对象的大小。
该文件是6个字节,而不是5个,因为行结束(在Windows上它可能是7个字节)。如果你使用C然后"你好"将是6个字节,因为二进制零'\0'
标记字符串的结尾。如果您使用的是另一种语言,那么它也会有自己的红带内存开销。
数据占用的内存(通常)小于对象占用的内存。对象将包括有关数据的其他信息,例如其大小和位置。这是您使用高级语言付出的代价。
答案 1 :(得分:0)
os.path.getsize
以字节为单位返回文件大小。
sys.getsizeof
返回在内存中存储str
/ bytes
对象所需的字节数。 (由于结构数据,它比实际内容有开销)。