2016-10-30 4 views
0

저는 두 가지 색상을 읽는 플라스크에 응용 프로그램을 가지고 있습니다. 그러나 대체하려고하면 .txt 파일에서 모든 것을 삭제하지만 내가 시도하고있는 라인은 삭제합니다 교체. 이 내 텍스트 파일파이썬은 줄의 특정 단어를 대체합니다

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 줄만 남게됩니다.

누구든지이 문제를 해결할 수 있습니까? 미리 감사드립니다 !! 예정되어

답변

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 filedata 7을 변경 파일을 다시 잘라 그냥 두 줄을 작성합니다. 나머지는 떨어 뜨린다.

경우에 따라 수정이 간단합니다. 필요에 따라 행 배열을 변경 했으므로 전체 행을 다시 쓰고 변경 사항을 수정하십시오. 마지막 부분을 다음과 같이 변경하십시오.

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

와우, 너무 간단! 고마워요! –

관련 문제