繁体   English   中英

通过Google API更新Google驱动器上的文件后,如果不关闭IDLE窗口,则无法编辑本地计算机上的文件

[英]After updating file on google drive through google api, the file on local machine is not editable without closing IDLE window

我首先遇到了使用Google Drive API的更新问题,甚至我都遵循了快速入门的示例,并且在对其进行了一些更改之后,Google Drive上的文件已成功更新。 但是现在更新后出现了一个新问题,我不确定是否是因为我对快速入门所做的更改不正确或其他原因。 问题是用本地计算机上的excel文件更新google驱动器上的excel文件后,如果我不关闭IDLE终端,本地机器上的excel文件将无法编辑; 但是,如果关闭IDLE窗口,则可以使用excel文件执行所有操作并保存更改。 例如,在不关闭IDLE文件的情况下,我对excel文件进​​行了一些更改并尝试将其保存,然后系统显示诸如共享冲突之类的内容,并将文件另存为临时文件62635600 ....,如果尝试删除excel文件,然后系统说pythonw.exe正在使用该文件。 关闭“ IDLE”窗口后,Excel将恢复为正常状态,与正常的excel文件相同。 有人知道吗?

假设您使用的是API v3,我相信以下代码将完成您要实现的目标:

def update_file(file_path, fileId):
    media_body = MediaFileUpload(file_path, mimetype="application/vnd.ms-excel")
    results = file_service.update(fileId=fileId, media_body=media_body).execute()
    return results

我对它很满意,因为我在自己创建的应用程序中使用它来定期将文件备份到我的Google云端硬盘帐户中。
如果您感兴趣的话,它还包含一些更实用的示例与Google Drive API进行交互。

您可以在本地计算机上安装Google驱动器,然后将文件复制到正确位置的Google驱动器目录中。 然后Google驱动器(客户端软件)将更新文件。

我在这里找到了一个示例,并遵循了它。 我的问题是,由于本地文件的“标题”,“描述”和“ mimeType”与Google驱动器上的文件完全相同(因为本地文件的行值比Google驱动器上的文件多一个,所以其他所有内容都是同样),是否需要为这3个元素赋值? 如果不是,那么我无法使用本地驱动器上的文件来更新google驱动器上的文件,如果我仅将值分配给“ title”,则脚本会使用本地计算机上的文件来更新google驱动器上的文件,但是奇怪的是如果我不关闭IDLE终端,则本地计算机上的文件不可编辑,即使phthon脚本也已成功运行并完成,我得到的消息是“该文件正在由pythonw.exe使用...。” ,我该如何处理?

 def update_file(service, file_id, new_title, new_description, new_mime_type,
                new_filename, new_revision):     
  try:
    file = service.files().get(fileId=file_id).execute()

    # File's new metadata.
    file['title'] = new_title
    file['description'] = new_description
    file['mimeType'] = new_mime_type

    # File's new content.
    media_body = MediaFileUpload(
        new_filename, mimetype=new_mime_type, resumable=True)

    # Send the request to the API.
    updated_file = service.files().update(
        fileId=file_id,
        body=file,
        newRevision=new_revision,
        media_body=media_body).execute()
    return updated_file
  except errors.HttpError, error:
    print 'An error occurred: %s' % error
    return None

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM