VSCode能否设置强制停止Python Flask程序时自动删除上传文件?
解决Flask停止时自动清理上传文件的方案(VSCode相关)
一、VSCode内置任务配置(无需插件)
直接用VSCode的调试后任务功能,停止调试时自动触发清理:
- 在项目的
.vscode文件夹下创建或修改tasks.json,添加清理任务:{ "version": "2.0.0", "tasks": [ { "label": "clean_uploads", "type": "shell", "command": "rm -rf ./uploads/*", // Windows系统换成 `del /s/q ./uploads\*` "problemMatcher": [] } ] } - 修改
.vscode/launch.json,给Flask调试配置加上postDebugTask,指定调试停止后执行刚才的清理任务:
这样每次在VSCode里停止Flask调试,都会自动清空上传文件夹。{ "version": "0.2.0", "configurations": [ { "name": "Python: Flask", "type": "python", "request": "launch", "module": "flask", "env": { "FLASK_APP": "app.py", "FLASK_ENV": "development" }, "args": ["run", "--no-debugger"], "postDebugTask": "clean_uploads" } ] }
二、VSCode插件辅助
如果需要更灵活的事件触发,可以试试Trigger Task on Event插件,它能监听VSCode的调试停止事件,绑定之前配置的clean_uploads任务,实现同样效果。不过内置任务已经足够稳定,没必要额外装插件。
三、代码层面的通用方案(更靠谱)
不依赖编辑器,直接在Flask代码里加退出监听,不管用什么方式停止程序都能自动清理:
import os import shutil from flask import Flask import atexit app = Flask(__name__) UPLOAD_FOLDER = './uploads' app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER # 注册程序退出时执行的清理函数 @atexit.register def clean_uploads(): if os.path.exists(UPLOAD_FOLDER): for item in os.listdir(UPLOAD_FOLDER): item_path = os.path.join(UPLOAD_FOLDER, item) try: if os.path.isfile(item_path) or os.path.islink(item_path): os.unlink(item_path) elif os.path.isdir(item_path): shutil.rmtree(item_path) except Exception as e: print(f"清理文件出错: {e}") # 你的上传路由和业务逻辑...
内容的提问来源于stack exchange,提问作者Tegh Singh
相关产品推荐
相关产品推荐

