2016-10-30 95 views
0

我在烧瓶中有一个应用程序,我正在阅读两种颜色,但是当我尝试替换它们时,它会删除我的.txt文件中的所有内容,但我正在尝试的行取代。Python替换一行中的特定单词

这里是我的Python文件:

from flask import Flask,render_template,flash,request,redirect 
import os 
import sys 
app = Flask(__name__) 

def word_one(): 
    with open('line.txt', 'r+') as f: 
     for i, line in enumerate(f): 
      if i == 6: 
      found_color = line.find('color') 
      if found_color != -1: 
       color_one = line[found_color+len('color:'):] 
       print ('Color_One: '), color_one 
    return color_one 


def word_two(): 
    with open('line.txt', 'r+') as f: 
     for i, line in enumerate(f): 
      if i == 7: 
      found_color = line.find('color') 
      if found_color != -1: 
       color_two = line[found_color+len('color:'):] 
       print ('Color_Two: '), color_two 
    return color_two 

@app.route('/', methods=['POST']) 
def change_line(): 
    error= 'Sucessfull.' 
    first_color = word_one() 
    second_color = word_two() 
    try: 
     if request.method =="POST": 
      change_first_color = request.form ['first_color'] 
      change_second_color = request.form['second_color'] 
      filedata= None 
      with open('line.txt','r') as f: 
       filedata = f.readlines() 

       filedata[6] = filedata[6].replace(first_color , change_first_color + "\n") 
       filedata[7] = filedata[7].replace(second_color , change_second_color + "\n") 

      with open('line.txt','w') as f: 
       f.write(filedata[6]) 
       f.write(filedata[7]) 


    except BaseException as e: 
     print e 
    return render_template('line.html', error=error, change_first_color=change_first_color, 
          change_second_color=change_second_color) 

@app.route('/') 
def showLine(): 
    change_first_color = word_one() 
    change_second_color = word_two() 
    return render_template('line.html', change_first_color=change_first_color, 
          change_second_color=change_second_color) 

if __name__ == '__main__': 
    app.run(debug=True) 

这是我的文本文件:

///// 
///// 
///// 
//// 
///// 
///////// 
    color green 
    color green 

正如你可以看到我想要替换的“绿色”,以黄色和其他“绿色”为红色,但是这样做会删除文件中的每个“/”,只剩下最后两行。

任何人都可以帮我解决这个问题吗? 在此先感谢!

回答

2

提供预期:

with open('line.txt','r') as f: 
     filedata = f.readlines() 

     filedata[6] = filedata[6].replace(first_color , change_first_color + "\n") 
     filedata[7] = filedata[7].replace(second_color , change_second_color + "\n") 

    with open('line.txt','w') as f: 
     f.write(filedata[6]) 
     f.write(filedata[7]) 

你变线6和7 filedata,你打开/再次截断该文件,并只写了两行。放下其余的。

就你而言,修复很简单。由于您已根据自己的需要更改了线条阵列,请回写完整的线条,并修改您的更改。所以把最后一部分改成:

 with open('line.txt','w') as f: 
      f.writelines(filedata) 
+0

哇,太简单了!非常感谢! –