将文件上传到Google云端硬盘后如何删除

时间:2019-03-11 14:43:22

标签: python-2.7 google-api-client

我已经用python编写了将文件上传到Google云端硬盘的代码,但是在上传之后,我无法从本地驱动器中删除该文件,因为出现错误“访问被拒绝”,但是如果退出功能,则可以删除文件。所以我的问题是如何从函数内部删除文件?

  

GDriveUpload.py

import os
import httplib2
import ntpath
import oauth2client
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload

# Copy your credentials here
_CLIENT_ID = 'YOUR_CLIENT_ID'
_CLIENT_SECRET = 'YOUR_CLIENT_SECRET'
_REFRESH_TOKEN = 'YOUR_REFRESH_TOKEN'
_PARENT_FOLDER_ID = 'YOUR_PARENT_FOLDER_ID'
_DATA_FILE = 'datafile.dat'

# ====================================================================================

# Upload file to Google Drive
def UploadFile(client_id, client_secret, refresh_token, parent_folder_id, local_file, DeleteOnExit=False):
    cred = oauth2client.client.GoogleCredentials(None,client_id,client_secret,refresh_token,None,'https://accounts.google.com/o/oauth2/token',None)
    http = cred.authorize(httplib2.Http())
    drive_service = build('drive', 'v2', http=http)
    media_body = MediaFileUpload(local_file, mimetype='application/octet-stream', chunksize=5242880, resumable=True)
    body = {
        'title': (ntpath.basename(local_file)),
        'parents': [{'id': parent_folder_id}],
        'mimeType': 'application/octet-stream'
    }
    request = drive_service.files().insert(body=body, media_body=media_body)
    response = None
    while response is None:
        status, response = request.next_chunk()
        if status:
            print "Uploaded %.2f%%" % (status.progress() * 100)
    if DeleteOnExit == True:
        os.remove(local_file)

# ====================================================================================


if __name__ == '__main__':
    UploadFile(_CLIENT_ID, _CLIENT_SECRET, _REFRESH_TOKEN, _PARENT_FOLDER_ID, _DATA_FILE, DeleteOnExit=True)

0 个答案:

没有答案