首页 > 解决方案 > 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)

任何和所有的帮助表示赞赏。谢谢!

标签: pythonflask

解决方案


我用以下目录结构解决了这个问题:

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

如您所见,我在放置文件的目录中wellness.csv调用了两个文件。名称将从模板传递,这两个文件将从目录中删除。wellness.jsonlapp.pywellness

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

成功删除文件后

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

.
├── 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}"

推荐阅读