Pythonでテキストファイル内の特定の行を編集する [重複] 質問する

Pythonでテキストファイル内の特定の行を編集する [重複] 質問する

次のような内容のテキスト ファイルがあるとします。

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 に置き換えて編集しようとしています。でも、そんなことできるのでしょうか?

ベストアンサー1

次のようなことをしたいとします。

# 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 )

その理由は、ファイル内で直接「2 行目を変更する」などの操作を行うことができないからです。ファイルの一部は上書きすることしかできず (削除はできません)、つまり、新しい内容が古い内容を覆うだけです。したがって、2 行目に「Mage」と書き込むと、結果の行は「Mageior」になります。

おすすめ記事