1

から返された次のエントリを含むファイルを作成しましたfile.read()

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

'f' をハンドラーとして、ファイルを開きます。 f.read()上記を返します。 f.tell()35 を返す L は 76 を返します。35 より大きいオフセットsys.getsizeof(f)で呼び出しを試みても、何も返されません。f.seek(offset)

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() はdisk 上のファイルのサイズを返しません。代わりに、ファイル オブジェクト (ディスク上の実際のファイルへのインターフェイス) がメモリ内で占めるサイズを返します。

ディスクが存在しないオブジェクトで sys.getsizeof() を使用することもできます。instacen の場合、 ifs = 'abcd'を呼び出すと、sys.getsizeof(s)(実装によっては) 25 が返される場合がありますが、s は文字列であり、ディスク上にスペースがありません。

于 2011-05-12T12:07:16.530 に答える