You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:24:08