テキストファイルがあるとしましょう
Line 1
Line 2
Line 3
私はそれを読み、Line 2 を Line Two に変更することにしました。変更を加えてファイルを書き直すだけでなく、Python でそれをエレガントに行うことはできますか? file.seek() を試してみましたが、実際にはどこにも行きませんでしたし、正確に何をするのか理解していません。
ファイルは一連のバイトです。表現するのに必要なバイト数が多い、または少ない途中で何かを変更したい場合は、ファイルの残りの部分のサイズを変更する必要があります。
ファイルはストレージ メディア上の物理的なバイト シーケンスであるため、残りのファイル全体を書き換える必要があります。つまり、次のすべてを移動する必要がありますline 2
。
実際には、これはファイルを書き換えることを意味します。
fileinput
モジュールが提供するインプレース編集の機能が必要です。
inplace-edit.py:
import sys
import fileinput
for line in fileinput.input(sys.argv[1], inplace=1):
line = line.rstrip() # Remove the new line
if line == 'Line 2':
line = 'Line two'
print line
data.txt:
Line 1
Line 2
Line 3
実行するには:
python inplace-edit.py data.txt
結果の data.txt:
Line 1
Line two
Line 3