次のような内容のテキスト ファイルがあるとします。
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」になります。