Python 文件对象和 seek() 的大小



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

'

abcdefgh1234ijkl5678\end'

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

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

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

# size of the file in bytes
size = os.path.getsize(pathname)
# another way
f = file(pathname)
size = os.fstat(f.fileno()).st_size

引用

  • os.path.getsize
  • os.fstat
  • f.菲利诺

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

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

相关内容

  • 没有找到相关文章

最新更新