2012-11-07 1 views

答えて

9

これはOSおよびlibcに固有です。 file.seek()オペレーションは、実際のOSレベルのファイルに対しては、fseek(3) Cコールに委任されます。 Python 2.7's docsによると

+0

このプラットフォームは実装にも依存しますか? – jlconlin

+0

はい、実装はlibcとOSの間で分割されています。 –

+0

これは、ファイルの先頭から開始することなく、これを行うことは可能ですか簡単ですか? – jlconlin

4

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

10バイトをバックアップするだけの場合は、tellの必要はありません。

F.seek(-10,1) 
+0

これを共有していただきありがとうございます。これは私の例として与えたよりはるかに簡単な実装です。 – jlconlin

8

file.seek(offset[, whence])

)(stdioのfseek関数のように、ファイルの現在位置を設定します。 whence 引数はオプションで、デフォルトはos.SEEK_SETまたは0(絶対ファイル ポジショニング)です。他の値はos.SEEK_CURまたは1(現在の位置 )とos.SEEK_ENDまたは2(ファイルの の末尾を基準にしてシーク)です。

あなたは10のバイトがあなたの位置に対して戻りたいだろうと言う:

file.seek(-10, 1) 
-4

はマニュアルに従って、あなたはf.seek(offset, from_what)、またはあなたのケースで行う必要があり、F.seek(-10, loc)

あなたの例これはもっと明白です

+4

これはかなり誤解を招くことです。この答えは、 'loc'が1の場合にのみ有効です。 – mgilson

関連する問題