【Python3】バイナリを扱ってみる

テキストファイルを解析してごにょごにょする機会は多いんだけども、稀にバイナリデータを解析して、データの容量だとか開始アドレスだとかいった情報を洗い出して抽出とかいう泥臭い作業を頼まれることもある。バイナリエディタを使って目視で調査しても良いは良いんだけど、解析対象のファイルが20個以上あって超絶だるそうだったので、スクリプト組んで対応することにした。

まー手段は何でも良かったのだが、勢いに任せてPythonで組んでみたので、忘れないように要所をメモしておく。

ファイルの指定した位置から順次読み込んでいくパターンと、ファイルのケツから指定アドレスまで遡上するパターンを書いてみた。まー、印象的には他のプログラミング言語でバイナリ扱うのとそんなに変わらんよね。今回のポイントは下記のとおり。

  • open()でrb指定すると、バイナリ読み込みでファイルをオープンできる。
  • seek()で指定したアドレスに移動する。
  • read(1)で1Byte読み込み。
  • 読み込んだデータがEOF(ファイル終端)だったらnotで判定できるっぽい。
  • os.SEEK_ENDを使えば、ファイルのケツを指定できる。
  • close()でファイル閉じる。

今のところ使いそうなのはこんぐらいかなぁ。まだバイナリへ書き出しするような案件はないのだが、そのときはまた調べて対応しようかね。Google先生は何でも知っているのだ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)