【问题标题】:Python - replace multiple lines in Python FlaskPython - 替换 Python Flask 中的多行
【发布时间】:2016-10-23 20:08:25
【问题描述】:

我是 Python 新手!

我有一个表单,我可以在其中读取和写入一切正常,替换在第一个输入中工作正常,但在我的第二个输入中不起作用。

例如,我的单词 1 = Toy,如果我将其更改为“house”,它会很好地覆盖我的 .txt,但如果我使用单词 2 = house,则不会发生任何事情。

这是我的代码烧瓶:

from flask import Flask,render_template,flash,request,redirect
import os
app = Flask(__name__)
from lines import word_one,word_two

@app.route('/', methods=['POST'])
def change_line():
    error= 'Cambios exitosos.'
    replace = word_one()
    replacetwo = word_two()
    try:
        if request.method =="POST":
            word = request.form ['word']
            words = request.form ['words']
            filedata= None
            rem = None
            with open('line.txt','r') as f:
                filedata = f.read()
                rem = f.read()

                filedata = filedata.replace(replace , word + "\n" )
                rem = rem.replace(replacetwo , words + "\n" )

            with open('line.txt','w') as f:
                f.write(filedata)
                f.write(rem)

    except BaseException as e:
        print e 
    return render_template('line.html')

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


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

这是我的 .txt

wordone Toy
wordtwo house

这是我的 .html

<form method="post" name="test">
                            <h4>Chaging Values with POST Method</h4>
                            <div class="col-sm-9">
                            <label class="col-sm-3 col-sm-3 control-label">word 1 : </label>
                            <input type="text" class="form-control" name="word" value="{{ wordone }}">
                            </div>
                            <div class="col-sm-9">
                            <label class="col-sm-3 col-sm-3 control-label">word 2 : </label>
                            <input type="text" class="form-control" name="words" value="{{ wordtwo }}">
                            </div>


                            <input type="submit" value="Save Changes!">


    </form>

由于单词 1 有效,我唯一的问题是单词 2..

这是我在客户端的输出:

Here is my output

【问题讨论】:

  • 我不明白这里出了什么问题。输出应该如何?
  • 如果我更改单词 2 输入没有任何反应,但如果我在单词 1 输入中执行相同操作,它会覆盖表单和我的 .txt

标签: python python-2.7 flask


【解决方案1】:

尝试在您的代码中执行此操作:

        with open('line.txt','r') as f:
            filedata = f.read()
            filedata = filedata.replace(replace , word + "\n" )
            filedata = filedata.replace(replacetwo , words + "\n" )

        with open('line.txt','w') as f:
            f.write(filedata)

无需两次读取和写入相同的内容。

【讨论】:

    猜你喜欢
    • 2021-08-03
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多