在Python中编辑文本文件中的特定行假设我有一个包含以下内容的文本文件:Dan
Warrior
500
1
0有没有办法可以编辑该文本文件中的特定行?现在我有这个:#!/usr/bin/env pythonimport io
myfile = open('stats.txt', 'r')dan = myfile.readline()print danprint "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]是不正确的。但是你明白了我的观点吧?我正在尝试用Mage替换Warrior来编辑第2行。但我甚至可以这样做吗?
3 回答

宝慕林4294392
TA贡献2021条经验 获得超8个赞
你想做这样的事情:
# with is like your try .. finally block in this casewith open('stats.txt', 'r') as file: # read a list of lines into data data = file.readlines()print dataprint "Your name: " + data[0]# now change the 2nd line, note that you have to add a newlinedata[1] = 'Mage\n'# and write everything backwith open('stats.txt', 'w') as file: file.writelines( data )
原因是你不能直接在文件中执行“更改第2行”之类的操作。您只能覆盖(而不是删除)文件的某些部分 - 这意味着新内容仅涵盖旧内容。所以,如果你在第2行写“Mage”,那么结果就是'Mageior'。

婷婷同学_
TA贡献1844条经验 获得超8个赞
您可以使用fileinput进行就地编辑
import fileinputfor line in fileinput.FileInput("myfile", inplace=1): if line .....: print line

有只小跳蛙
TA贡献1824条经验 获得超8个赞
def replace_line(file_name, line_num, text): lines = open(file_name, 'r').readlines() lines[line_num] = text out = open(file_name, 'w') out.writelines(lines) out.close()
然后:
replace_line('stats.txt', 0, 'Mage')
添加回答
举报
0/150
提交
取消