python - 将本地文件上传到 Google Drive 后如何删除?
问题描述
我需要一个 python 函数将文件上传到 Google Drive,然后从文件系统中删除它。尝试使用以下代码时,尝试删除文件时出现错误:
def upload():
file_metadata = {
'name': 'thankyou.jpg',
'mimeType': 'image/jpeg'}
media = MediaFileUpload('thankyou.jpg')
myfile = drive_service.files().create(body=file_metadata, media_body=media, fields='id').execute()
os.remove('thankyou.jpg')
上传成功完成,但上传后无法在本地删除文件。我得到的错误是:
PermissionError: [WinError 32] The process cannot access the file
because it is being used by another process: 'thankyou.jpg'
我应该怎么做才能删除文件?
解决方案
我自己在 Windows 10 中遇到了这个问题,最后想出了这个解决方案:将用于存储 MediaFileUpload 对象的变量设置为 None:
media = MediaFileUpload(folder+file.name, resumable=True)
logging.info("{} - {} {}MB uploading...".format(datetime.datetime.now().strftime("%H:%M:%S"), file.name, file_size))
try:
service.files().create(body=file_metadata, media_body=media, fields='id').execute()
logging.info(datetime.datetime.now().strftime("%H:%M:%S")+" - "+file.name+" uploaded")
media = None
except Exception as err:
logging.warning(datetime.datetime.now().strftime("%H:%M:%S")+" - "+file.name+" failed to upload:\nType: {}".format(type(err)))
try:
os.remove(folder+file.name)
logging.info(datetime.datetime.now().strftime("%H:%M:%S")+" - "+file.name+" deleted.")
except PermissionError as err:
logging.error("{} - Failed to delete local file. Looks like a permision error: {}".format(datetime.datetime.now().strftime("%H:%M:%S"), err))
except Exception as err:
logging.warning("{} - Failed to delete local file: {}".format(datetime.datetime.now().strftime("%H:%M:%S"), err))
推荐阅读
- c# - 制作一个检查用户输入是否等于随机数的方法
- php - 如何在 .htaccess 中使用正确的重定向在 PHP 中创建干净的 URL?
- android - 如何在 Google Play 游戏服务中为多人游戏传递额外参数?
- java - Java编译错误“未找到变量”持续存在
- python - 将 Jupyter Notebook 中的主题更改为深色 - 现在无法正确查看输出
- jenkins-pipeline - 如何在成员函数中使用内置管道函数?
- c# - 使用 Azure Function (.NET Core) 下载文件
- java - JPA Criteria API 中订单的自定义 SQL
- excel - 尽管条件有效,vba 执行直到循环不进入
- java - 具有项目聚合和工作目录问题的 Maven 反应器