1. ホーム
  2. python

[解決済み] Pythonでテキストファイルの特定の行を編集する

2022-10-25 07:23:21

質問

例えば、以下のようなテキストファイルがあるとします。

Dan
Warrior
500
1
0

そのテキストファイルの特定の行を編集する方法はありますか?今、私はこれを持っています。

#!/usr/bin/env python
import io

myfile = open('stats.txt', 'r')
dan = myfile.readline()
print dan
print "Your name: " + dan.split('\n')[0]

try:
    myfile = open('stats.txt', 'a')
    myfile.writelines('Mage')[1]
except IOError:
        myfile.close()
finally:
        myfile.close()

はい、わかっています。 myfile.writelines('Mage')[1] が正しくないことは知っています。でも、私の言いたいことはわかりますよね?私は2行目を編集して、WarriorをMageに置き換えようとしています。しかし、私はそれを行うことができますか?

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

このようなことをしたいのですね。

# with is like your try .. finally block in this case
with open('stats.txt', 'r') as file:
    # read a list of lines into data
    data = file.readlines()

print data
print "Your name: " + data[0]

# now change the 2nd line, note that you have to add a newline
data[1] = 'Mage\n'

# and write everything back
with open('stats.txt', 'w') as file:
    file.writelines( data )

この理由は、"change line 2" のようなことをファイル内で直接行うことができないからです。ファイルの一部を上書きすることしかできません (削除はできません)。つまり、新しいコンテンツは古いコンテンツにかぶさるだけなのです。つまり、2 行目の上に 'Mage' と書いた場合、結果として 'Mageior' となります。