python - Python:该进程无法访问该文件,因为它正在被另一个进程使用:
问题描述
我有后端代码,它应该下载 instagram 个人资料图片并将其发送到前端,然后它应该删除存储该图片的文件夹。它在将图像发送到前端时有效,但完成后不会删除文件夹。图片下载时的文件夹结构:
用户名(要删除的文件夹)
- 个人资料图片.jpg
- 用户名.date.json.xz
- ID
错误说删除文件有问题,因为 profile-picture.jpg 被另一个进程使用
import os
import shutil
from flask import Flask, request, send_file
import instaloader
app = Flask(__name__)
@app.route('/get-profile-picture')
def get_profile_picture():
try:
username = request.args.get('username')
mod = instaloader.Instaloader()
mod.download_profile(username, profile_pic_only=True)
print("before send")
return send_file(f'{username}/' + os.listdir(f'{username}')[0])
except instaloader.exceptions.ProfileNotExistsException:
return "Profile doesn't exist"
finally:
delete_folder(username)
def delete_folder(folder_name):
if os.path.isdir(folder_name):
shutil.rmtree(folder_name)
解决方案
在图像下载功能中将文件保存到内存后是否关闭文件?当您打开它以将其发送到前端时也是如此。完成所需的处理后,您可以手动使用或关闭文件。
推荐阅读
- vba - 如何在 VBA 的分页符处将我的一个文档拆分为多个文档?
- azure - Azure Function v2 TypeLoadException ExecutionContext
- javascript - 通过javascript验证表单
- ios - 手动将 UDID 添加到 Xcode 10?
- c - C忽略结构前面的const限定符
- javascript - 从 Blob URL 下载 PDF
- java - Java 静态方法、通配符/通用返回类型
- python-3.x - 以管理员身份运行的 Visual Studio 代码不会运行代码
- c - Linux timer_setup 函数
- linux - 将 libv8-3.14 的外部库实例安装到文件夹