6

ファイルのようなオブジェクトがあり、次の操作を行うとします。

F = open('abc', 'r')
...
loc = F.tell()
F.seek(loc-10)

シークは何をしますか? ファイルの先頭から開始し、loc-10バイトを読み取りますか? それとも、10バイトをバックアップするだけで十分スマートですか?

4

5 に答える 5

10

これは OS および libc 固有です。操作は、実際の OS レベルのファイルに対する C 呼び出しにfile.seek()委譲されます。fseek(3)

于 2012-11-07T21:43:13.340 に答える
8

Python 2.7のドキュメントによると:

file.seek(offset[, whence])

stdio の fseek() のように、ファイルの現在位置を設定します。whence 引数はオプションで、デフォルトは os.SEEK_SET または 0 (絶対ファイル位置) です。その他の値は、os.SEEK_CUR または 1 (現在の位置から相対的にシーク) および os.SEEK_END または 2 (ファイルの終わりから相対的にシーク) です。

現在の位置から 10 バイト戻りたいとします。

file.seek(-10, 1)
于 2012-11-07T21:44:54.893 に答える
4

10 バイトをバックアップするのに十分スマートなはずですが、詳細は実際に使用しているファイルシステム/OS/ランタイム ライブラリに依存すると思います。

10 バイトだけバックアップする場合は、tell.

F.seek(-10,1)
于 2012-11-07T21:42:38.170 に答える
-4

ドキュメントによると、あなたがする必要がf.seek(offset, from_what)あるか、あなたの場合は、F.seek(-10, loc)

あなたの例はうまくいくはずですが、これはより明示的です

于 2012-11-07T21:45:55.237 に答える