読者です 読者をやめる 読者になる 読者になる

けつあご日記

こんちは.菊地です.なんか浅ーいことをいろいろ書きます

Python: 大容量ファイルの一部だけを編集(置換)

Python

前回の記事(SublimeText でバイナリファイルをコピペしたいとき - けつあご日記)に引き続き,大きめのバイナリファイルを編集しようとしています.

1ファイルあたり数十Mbのファイルを数十枚一気に編集したいので,すべてread()してリストで取得などするのは当然避けたいです.まぁ,僕の場合はヘッダーの編集だけでいいので取得しても大したサイズにはならないのですが,理想としてはファイルにそのまま上書きしているような感覚で編集したいものです.

同じような悩みをもつ人がいました.
stackoverflow.com

なるほどぉ!seek()してwrite()するとseek()した位置を起点に上書きされるんですねぇ.

f = open('filename', 'r+b')
    f.seek(100)
    f.write('foobar')
    f.close()

pythonのdocumentationにも似たような例が載っていました.7. 入力と出力 — Python 2.7.x ドキュメント


プログラミング超初心者が初心者になるためのPython入門(1) セットアップ・文字列・数値編
プログラミング超初心者が初心者になるためのPython入門(1) セットアップ・文字列・数値編