1. ホーム
  2. python

ファイル内の行をインプレースで修正することは可能ですか?

2023-10-29 15:30:33

質問

ファイルを一行ずつ解析し、行を進めながらインプレースで編集することは可能でしょうか?

どのように解決するのですか?

ファイルを一行ずつ解析し、行をまたぎながらインプレース編集することは可能ですか?

stdlibのようにバックアップファイルを使ってシミュレートすることができます。 fileinput モジュール が行います。

を満たさない行を削除するスクリプトの例です。 some_condition を満たさない行を、コマンドラインで指定されたファイルや stdin :

#!/usr/bin/env python
# grep_some_condition.py
import fileinput

for line in fileinput.input(inplace=True, backup='.bak'):
    if some_condition(line):
        print line, # this goes to the current file

$ python grep_some_condition.py first_file.txt second_file.txt

完了時 first_file.txtsecond_file.txt を満たす行のみが含まれます。 some_condition() の述語を満たす行のみが含まれます。