Flask:如何从服务器删除文件

时间:2020-05-14 14:16:04

标签: python flask

我正在尝试从我的flask应用程序中删除两个文件。但这不起作用

html

<button href="/remove/wellness" id="remove" class="btn btn-success mr-2">Remove</button>

这是我的删除功能:

@app.route('/remove/<file_id>')
def remove(file_id):
    filename_jsonl = f"{file_id}.jsonl"
    filename_csv = f"{file_id}.csv"

    return os.remove(filename_jsonl, filename_csv)

任何帮助都将受到赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

我通过以下目录结构解决了该问题:

.
├── app.py
├── templates
│   └── delete_files.html
├── wellness.csv
└── wellness.jsonl

如您所见,在放置wellness.csv文件的目录中,我有两个文件名为wellness.jsonlapp.py。名称wellness将通过模板传递,这两个文件将从目录中删除。

app.py

import os
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def search():
    return render_template('delete_files.html')

@app.route('/remove/<file_id>')
def remove(file_id):
    filename_jsonl = f"{file_id}.jsonl"
    filename_csv = f"{file_id}.csv"
    try:
        os.remove(filename_jsonl)
        os.remove(filename_csv)
        return "Files are deleted successfully"
    except Exception as e:
        return f"Error in deleting files: {e}"

delete_files.html

<html>
<head>
  <title>Delete files using button click in Flask</title>
</head>
<body>
  <a href="/remove/wellness" id="remove" class="btn btn-success mr-2">Remove</a>
</body>
</html>

输出:

点击删除按钮后,我看到消息Files are deleted successfully

after successfully deletion of the files

删除文件后的文件夹结构:

.
├── app.py
└── templates
    └── delete_files.html

更新

如果要在成功删除后重定向到根URL,可以使用如下的redirect方法:

import os
from flask import Flask, render_template, redirect, url_for

app = Flask(__name__)

@app.route('/')
def search():
    return render_template('delete_files.html')

@app.route('/remove/<file_id>')
def remove(file_id):
    filename_jsonl = f"{file_id}.jsonl"
    filename_csv = f"{file_id}.csv"
    try:
        os.remove(filename_jsonl)
        os.remove(filename_csv)
        return redirect(url_for('search'))
    except Exception as e:
        return f"Error in deleting files: {e}"