我使用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()
返回的内容之间是否存在不匹配?
答案 0 :(得分:7)
sys.getsizeof
返回一个对象的大小(即file
类实例在内存中占用的字节数),与文件内容的大小无关。
答案 1 :(得分:4)
# size of the file in bytes
size = os.path.getsize(pathname)
# another way
f = file(pathname)
size = os.fstat(f.fileno()).st_size
答案 2 :(得分:3)
sys.getsizeof()不会返回磁盘上文件的大小。相反,它返回文件对象(磁盘上真实文件的接口)占用内存中的大小。
您甚至可以将sys.getsizeof()用于没有任何磁盘存在的对象。对于instacen,如果s = 'abcd'
,则调用sys.getsizeof(s)
可能会返回(取决于您的实现)25,即使s是一个字符串,并且它在磁盘上没有任何空间。