1

テキストファイルがあるとしましょう

Line 1
Line 2
Line 3

私はそれを読み、Line 2 を Line Two に変更することにしました。変更を加えてファイルを書き直すだけでなく、Python でそれをエレガントに行うことはできますか? file.seek() を試してみましたが、実際にはどこにも行きませんでしたし、正確に何をするのか理解していません。

4

2 に答える 2

6

ファイルは一連のバイトです。表現するのに必要なバイト数が多い、または少ない途中で何かを変更したい場合は、ファイルの残りの部分のサイズを変更する必要があります。

ファイルはストレージ メディア上の物理的なバイト シーケンスであるため、残りのファイル全体を書き換える必要があります。つまり、次のすべてを移動する必要がありますline 2

実際には、これはファイルを書き換えることを意味します。

于 2013-08-10T17:23:17.180 に答える
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
于 2013-08-10T17:52:23.357 に答える