1

我创建了一个包含以下条目的文件,由file.read()

'abcd\nefgh\n1234\nijkl\n5678\n\nend'

我现在打开要读取的文件,使用“f”作为处理程序。 f.read()返回上述内容。 f.tell()返回 35L sys.getsizeof(f)返回 76。尝试f.seek(offset)使用任何高于 35 的偏移量调用不会返回任何内容。

Python 文档说file.seek()以字节为单位移动。sys.getsizeof()那么和返回的内容之间是否存在不匹配f.tell()/seek()

4

3 回答 3

7

sys.getsizeof返回一个对象的大小(即一个类实例在内存中占用了多少字节file),与文件内容的大小无关。

于 2011-05-12T12:04:48.620 回答
4
# size of the file in bytes
size = os.path.getsize(pathname)
# another way
f = file(pathname)
size = os.fstat(f.fileno()).st_size

参考

于 2011-05-12T12:53:03.530 回答
3

sys.getsizeof() 不返回磁盘上文件的大小。相反,它返回文件对象(磁盘上真实文件的接口)在内存中占用的大小。

您甚至可以将 sys.getsizeof() 用于不存在任何磁盘的对象。对于 instacen,如果s = 'abcd',则调用sys.getsizeof(s)可能会返回(取决于您的实现)25,即使 s 是一个字符串,并且它在磁盘上没有任何空间。

于 2011-05-12T12:07:16.530 回答