我创建了一个包含以下条目的文件,由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 是一个字符串,并且磁盘上没有任何空间。