调用Google Drive API上传文件后程序无法删除本地文件如何解决
问题根因
- 代码中打开
Test.txt用于上传的文件句柄没有被显式关闭,操作系统会锁定被进程占用的文件,因此os.remove执行时会触发权限错误无法删除文件。
修复方案
推荐使用with上下文管理器自动管理文件句柄,无需手动编写关闭逻辑,可避免资源泄露,适配全平台系统的文件操作规则。也可选择在上传请求执行完成后手动关闭打开的文件对象。
完整修复后代码
# 导入依赖模块 import os import json import requests # 创建本地测试文件 t = open('Test.txt', 'w') t.write('This is a test file') t.close() # 上传文件到Google Drive headers = {"Authorization": "Bearer {Access_Token}"} para = { "name": "Test.txt"} # 用with上下文管理器打开文件,请求完成后自动释放文件句柄 with open("./Test.txt", "rb") as f: files = { 'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'), 'file': f } r = requests.post( "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart", headers=headers, files=files) print(r.text) os.remove('Test.txt')
可选手动关闭方案
如果不使用上下文管理器,也可以在请求执行完成后手动调用close方法关闭文件:
# 上传代码部分调整为 files = { 'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'), 'file': open("./Test.txt", "rb")} r = requests.post( "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart", headers=headers, files=files) # 手动关闭文件句柄释放占用 files['file'].close()
内容的提问来源于stack exchange,提问作者MM-13
相关产品推荐
相关产品推荐

