例えば Python からテキストファイルの編集を行いたいが,保存時1行ずつ一時ファイルに書き込む以外にうまい方法はあるか
テキストファイルがあり,それの編集,例えば文字列置換をしたいとします.具体的に
- 6 を 9 にすべて置換したい
sed
でも vim -c '%s/6/9/g' -c ':wq' origfile
でもできるでしょうが,実際の処理はもう少し複雑で, たとえば Python で処理全体を書きたいです.[回答は Python 以外の言語についてでも大丈夫です]sed
は turing complete とはいえ
この場合に,(元の文字列)→(処理後の文字列)の変換は問題なく書けますが,その結果をファイルに反映する処理をどうするのがよいのか迷っています.「一行ごと(でも何でも)元のファイルを読み込み,処理後の文字列を全部一時ファイルに書き込み,mv tempfile original
」というのが唯一思いつく(そしてきちんと動く)方法なのですが,必ずファイルを全コピー相当になってしまうのが無駄が多いような気もしてしまいます.ごくごく直観的,そしてナイーブには変更のあったところだけ書き込みたい(原理的に無理な気がしてきていますが).底まで行かずともなにかうまい方法はありませんか,それともこれで正しいやり方なのでしょうか.