# memory: instinct-read-text-flattens-crlf
Path.read_text/write_textによる一括置換はCRLFをLFに潰し、2行の修正が全行差分になる。bytesで読み書きすること。レビュアは全行差分を読まないため、混ざると本当の変更が隠れる。
## ポイント
- Path.read_textはuniversal newline変換で\r\n→\nに潰す
- write_textは\nのまま書き戻す
- CRLFのファイルに1箇所だけ置換したつもりが全行差分になる
- 一括置換スクリプトはread_bytes()/write_bytes()で書く
- 置換語も.encode()してbytes同士で扱う
- git diff --statの行数が編集規則の数と桁で合っているかを見る
- 差分が膨らんだらgit checkout --で戻してからbytesで再適用する
## 関連ページ
[[instinct-grep-skips-binary-flagged-text-files]]
## 関連概念(未作成)
`CRLFとLFの違い` `universal newline変換` `git diffの使い方`
memory: instinct-read-text-flattens-crlf