在Python中编辑文本文件中的特定行

在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行。但我甚至可以这样做吗?


江户川乱折腾
浏览 731回答 3
3回答

宝慕林4294392

你想做这样的事情:# 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'。

婷婷同学_

您可以使用fileinput进行就地编辑import fileinputfor  line in fileinput.FileInput("myfile", inplace=1):     if line .....:          print line

有只小跳蛙

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')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python