python文件对象的大小和seek()
我创建了一个包含以下条目的文件,由 file.read()
返回
'abcd\nefgh\n1234\nijkl\n5678\n\nend'
我现在用 'f' 打开要读取的文件作为处理程序。 f.read()
返回上述内容。 f.tell()
返回 35L sys.getsizeof(f)
返回 76。 尝试调用偏移量大于 35 的 f.seek(offset)
不会返回任何内容。
Python 文档说 file.seek()
以字节为单位移动。那么 sys.getsizeof()
和 f.tell()/seek()
返回的内容是否不匹配?
I created a file with the following entry, returned by file.read()
'abcd\nefgh\n1234\nijkl\n5678\n\nend'
I open the file to read now, with 'f' as handler.f.read()
returns the above.f.tell()
returns 35Lsys.getsizeof(f)
returns 76.
Trying to call f.seek(offset)
with offset any higher than 35 returns nothing.
Python documentation says file.seek()
moves in bytes. so is there a mismatch between what is returned by sys.getsizeof()
and f.tell()/seek()
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
sys.getsizeof
返回一个对象的大小(即一个file
类实例在内存中占用多少字节),与文件的大小无关内容。sys.getsizeof
returns a size of an object (i.e. how many bytes afile
class instance takes up in the memory), and has nothing to do with the size of the file contents.参考文献
References
sys.getsizeof() 不会返回磁盘上文件的大小。相反,它返回文件对象(磁盘上真实文件的接口)在内存中占用的大小。
您甚至可以对没有任何磁盘存在的对象使用 sys.getsizeof() 。对于 instacen,如果 s = 'abcd',则调用 sys.getsizeof(s) 可能会返回(取决于您的实现)25,即使 s 是一个字符串,并且它在磁盘上没有任何空间。
sys.getsizeof() does not return the size of the file on disk. Instead, it returns the size that the file object (the interface to the real file on disk) takes up in memory.
You could even use sys.getsizeof() with objects that don't have any disk presence. For instacen, if
s = 'abcd'
, then callingsys.getsizeof(s)
might return (depending on your implementation) 25, even though s is a string, and it doesn't any space on disk.