为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

江户川乱折腾 2019-07-27 09:55:40
在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'。


查看完整回答
反对 回复 2019-07-27
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

您可以使用fileinput进行就地编辑

import fileinputfor  line in fileinput.FileInput("myfile", inplace=1):
    if line .....:
         print line


查看完整回答
反对 回复 2019-07-27
?
有只小跳蛙

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


查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 730 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信