ファイルを開き、f.seek()
とf.tell()
を使用して各行を読み取りたい:
test.txt:
abc
def
ghi
jkl
私のコードは:
f = open('test.txt', 'r')
last_pos = f.tell() # get to know the current position in the file
last_pos = last_pos + 1
f.seek(last_pos) # to change the current position in a file
text= f.readlines(last_pos)
print text
ファイル全体を読み取ります。
わかりました、これを使用できます:
f = open( ... )
f.seek(last_pos)
line = f.readline() # no 's' at the end of `readline()`
last_pos = f.tell()
f.close()
覚えてね、 last_pos
はファイルの行番号ではなく、ファイルの先頭からのバイトオフセットです。インクリメント/デクリメントしても意味がありません。
F.tellとf.seekを使用しなければならない理由はありますか? Pythonのファイルオブジェクトは反復可能です。つまり、他のことをあまり気にすることなく、ファイルの行をネイティブにループできます。
with open('test.txt','r') as file:
for line in file:
#work with line
Isliceを使用して行をスキップすることは私にとって完璧に機能し、探しているものに近いように見えます(ファイル内の特定の行にジャンプします):
from itertools import islice
with open('test.txt','r') as f:
f = islice(f, last_pos, None)
for line in f:
#work with line
ここで、last_posは、前回読み取りを停止した行です。 last_posの1行後に反復を開始します。
現在の位置を取得する方法ファイルの特定の行を変更する場合:
cp = 0 # current position
with open("my_file") as infile:
while True:
ret = next(infile)
cp += ret.__len__()
if ret == string_value:
break
print(">> Current position: ", cp)