2016-11-15 23 views
0

當我試圖寫一個文件中,除了我試圖取代的話我的文件刪除等一應俱全..當我在寫一個文件刪除以外的所有替代詞

這裏是我的代碼:

app.route('/', methods=['POST']) 
def writing(): 
    address_1 = address1() 
    address_2 = network1() 

    try: 
     if request.method =="POST": 
      var1 = request.form ['addr1'] 
      var2 = request.form ['addr2'] 

      changeaddress = [var1, var2] 
      address = [address_1, address_2] 
      new_var = [] 
      cur_addr = 0 
      new_line = None 
      with open('address.txt','r+') as file: 
       for line in file: 
        if address[cur_addr] in line: 
         new_line = line.replace(address[cur_addr], changeaddress[cur_addr] + "\n") 
         cur_addr += 1 
        new_var.append(new_line) 

      with open('address.txt','w') as file:   
       file.writelines(new_var) 

    except BaseException as e: 
     print e 

    return render_template('addr.html', var1=var1,var2=var2) 

這是我的文本文件:

####### 
    Address 192.168.0.3 
    Address 192.168.0.1 <--- I'm reading this 
###### 
############## 
######## 
    Network 123.123.0.1 <---- I'm reading this 

乳寧的代碼,例如後我更換192.168.0.11.1.1.1123.123.0.10.0.0.0我得到這個:

Address 1.1.1.1 
Network 0.0.0.0 

正如你可以看到刪除除了我替換的東西之外的所有東西。我想得到這樣的東西:

####### 
    Address 192.168.0.3 
    Address 1.1.1.1 
###### 
############## 
######## 
    Network 0.0.0.0 

所以我的應用程序不應該取代我想要替換的行。

回答

3

您只是將被替換的行添加到您編寫的列表中。

正如我在上一個問題中所說的那樣,縮進新行,並且在那裏不清楚的地方,附加未替換的行。

if address[cur_addr] in line: 
    # replace 
    new_var.append(new_line) 
else: 
    # keep 
    new_var.append(line) 
相關問題