回答:
seek()
あまり心配する必要はありません。
まず、開いているファイルを操作するときに便利です。
その構文は次のとおりであることに注意することが重要です。
fp.seek(offset, from_what)
fp
作業しているファイルポインターはどこですか。offset
移動するポジションの数を意味します。from_what
参照ポイントを定義します。
省略した場合のfrom_what
デフォルトは0です。
ファイルを管理するときは、常に現在作業しているファイル内の位置が存在することを忘れないでください。開いたばかりの場合、その位置がファイルの先頭になりますが、ファイルを操作するときに、進むことができます。開いているファイル
seek
にwalk
沿って移動する必要があるときに、移動先のパスと同じように役立ちます。
ファイルを開くと、システムはファイルの先頭を指し示します。読み取りまたは書き込みは最初から行われます。seek()
あなたがその場所で読み取りまたは書き込みできるように、ファイルのいくつかの他の部分へのポインタ操作が移動します。
したがって、ファイル全体を読み取るが最初の20バイトをスキップする場合は、ファイルを開いて、seek(20)
読み取りを開始する場所に移動してから、ファイルの読み取りを続行します。
または、10バイトごとに読み取りたい場合はseek(9, 1)
、read(1)
(現在の位置から9バイト先に移動)、(1バイトを読み取る)、繰り返すループを作成できます。
seek
期待関数はオフセットをバイト単位で。
したがって、次の内容のテキストファイルがあるとします。
simple.txt
abc
次のように、1バイトをジャンプして最初の文字をスキップできます。
fp = open('simple.txt', 'r')
fp.seek(1)
print fp.readline()
>>> bc
fp = open('afile.png', 'rb')
fp.seek(16)
print 'width: {0}'.format(struct.unpack('>i', fp.read(4))[0])
print 'height: ', struct.unpack('>i', fp.read(4))[0]
注:呼び出す
read
と、リードヘッドの位置が変わりますseek
。
文字列の場合は、WHENCEの使用を忘れてください。f.seek(0)を使用してファイルの先頭に配置し、f.seek(len(f)+1)を使用してファイルの末尾に配置します。open(file、 "r +")を使用して、ファイル内の任意の場所で読み取り/書き込みを行います。「a +」を使用すると、カーソルの位置に関係なく、ファイルの最後にのみ書き込む(追加する)ことができます。
os.SEEK_SET
、os.SEEK_CUR
、およびos.SEEK_END
代わりにマジックナンバーを0
、1
と2
それぞれ。