多くのテキストエンコードには、エンコードされたテキストを後ろ向きにしてにデコードできるというプロパティがあります。 ASCII、UTF-8、UTF-16、およびUTF-32はすべてこのプロパティを持ちます。これにより、ファイルの最後の行を読み込む前にすべての行を読むことなく、ファイル内の現在の位置から数行先に移動するような便利なことができます。ユニコードテキストを逆方向にデコードする
残念ながら、Pythonはファイルを逆方向にデコードすることはありません。 read
後方には、またはseek
は、エンコードされたファイル内の文字数で表示することはできません。 codecs
モジュールのデコーダは、インクリメンタルデコーディングを転送するのに、をサポートしますが、後方はサポートしません。 UTF-8バイトを逆順に送ることができる「UTF-8-backwards」コーデックはないようです。
おそらくコーデックに依存する文字境界の同期を自分自身で実装し、バイナリチャンクを逆方向に読み込み、codecs
モジュールの適切なデコーダに正しく整列されたチャンクを送ることができますが、それは非専門家が微妙なディテールを逃し、出力が間違っていることに気付かない。
Pythonで既存のツールを使ってテキストを逆方向に復号する方法はありますか?
何人かががこれを行うには、ファイル全体を読むことを目的を破ることにポイントを逃しているように見えます。私が物事を明確にしている間に、私はもこれが可変長エンコーディングのために働く必要があると付け加えるかもしれません。 UTF-8をサポートする必要がありますです。ここ
可能性のある重複した[パイソンを使用して逆の順序でファイルを読む](HTTP ://stackoverflow.com/questions/2301789/read-a-file-in-reverse-order-using-python) – gravity
@gravity:それはファイル全体を読み込みます。私は特にそれをしないようにしています。 – user2357112
そこには特定のコミュニティWikiの回答があります。このダイレクトリンクでご覧ください:http://stackoverflow.com/questions/260273/most-efficient-way-to-search-the-last-x-lines-of-a-file-in-python/260433#260433 – gravity