入力テキスト ファイルの場合、通常は .seek と .tell の両方がバイトで動作することを知っています。つまり、.seek は、指定された引数で指定されたポイントに関連して特定のバイト数をシークし、.tell はバイト数を返します。ファイルの先頭から。
私の質問は: utf-8 のような他のエンコーディングを使用する場合、これは同じように機能しますか? たとえば、utf-8 では一部の文字に数バイトが必要です。
これらのメソッドが utf-8 ファイルの解析時にバイトを処理する場合、予期しない動作が発生する可能性があるように思われます (たとえば、カーソルが文字のマルチバイト エンコーディング内で終了するか、マルチバイト文字が次のように登録される可能性があります)。数文字)。
もしそうなら、同じタスクを実行する他の方法はありますか? 特に、ファイルを解析する際に、カーソルの位置に関する情報が文字単位で必要な場合に使用します。
一方、open()関数でエンコーディングを指定すると……
infile = open(ファイル名、encoding='utf-8')
.seek と .tell の動作は変わりますか?