напишите в file.txt на странице flask сервера - PullRequest
0 голосов
/ 07 августа 2020

Вот код, который я выполняю в обычном python скрипте, он работает, но когда дело доходит до функции flask, он создает файл file.txt, но без записи в него

app = Flask(__name__)
@app.route('/execute',methods=['POST'])

def execute():
    message = request.get_json(force=True)
    name=message['name']
    path="data/"
    testname="test.txt"
    encodedname="encoded.txt"

    output = open(path+testname, "wb")
    output.write(name.encode('utf-8'))

здесь запись работает впервые

    with open(path+testname, 'rb') as infile:
        data = infile.readlines()
        all_data=""
        for oneline in data:
            oneline=oneline.decode('utf-8')
            print(

oneline)
            new_data = re.sub(r'[^\u0600-\u065F\u0670-\u06ef\u0750-\u077f\ufb50-\ufbc1\ufbd3-\ufd3f\ufd50-\ufd8f\ufd50-\ufd8f\ufe70-\ufefc\uFDF0-\uFDFD]+',' ', oneline)
            new_data = re.sub('[\ufd3e\ufd3f]',' ',new_data)
            new_data = remove_punctuations(new_data)
            new_data = new_data+'@\n'
            all_data = all_data+new_data
    cleanedtest = open(path+"cleanToTest.txt",'wb')
    cleanedtest.write(all_data.encode('utf-8'))

а здесь нет (cleanedTest)

1 Ответ

1 голос
/ 07 августа 2020

Вам следует использовать диспетчер контекста. Ваша проблема в том, что вам нужно закрыть этот файл после записи в него. Менеджер контекста сделает это автоматически.

Измените это:

output = open(path+testname, "wb")
output.write(name.encode('utf-8'))

На это:

with open(path+testname, 'wb') as output:
    output.write(name.encode('utf-8'))

Также измените это:

cleanedtest = open(path+"cleanToTest.txt",'wb')
cleanedtest.write(all_data.encode('utf-8'))

На это:

with open(path+"cleanToTest.txt", 'wb') as output:
    output.write(name.encode(all_data.encode('utf-8'))
...