私はウェブ上でsomehwereを見つけたtail -fのようなコードスニペットを持っています。不幸にも、ある時点で、ファイルに何かが追加されたためにEOFが存在しなくても、EOFに固執しているように見えました。それでも0が返されます。例えば10バイトのように私が戻ってきたら、前のEOF位置まで読み込みます。それだけです。ファイルを閉じて再オープンすることで修正できますが、その動作はわかりません。助けてもらえますか?python "tail -f"関数のreadlineがEOFに詰まっていたようです
コード:
def tail_f_nonblock(f):
while True:
where = f.tell()
line = f.readline()
if not line:
diff = f.tell()-where
f.seek(where)
# If there was some output, give -1
if diff!=0: return -1
else: return 0
else:
return line
ここで 'tell()'とは何ですか? – marmeladze
ファイル内の現在の位置を取得します。不完全な行が読み出されたかどうかを調べるために使用されます。そうであれば、元に戻してユーザーに通知します。 –