如何通过Python API将JSON/Pickle文件导入并读取到Google Drive?

5

我从这里下载了起始代码:http://goo.gl/Tcxkod,并按照说明安装了来自https://developers.google.com/api-client-library/python/start/installationsample.py

alvas@ubi:~/git/UniversalCorpus/drive-cmd-line-sample$ python sample.py
Success! Now add code here.

但是我该如何将pickle/json文件转储到驱动器上,然后检索它以从Python中读取?我点击了开发文档,除了repr和源代码本身外,没有其他线索:https://developers.google.com/resources/api-libraries/documentation/drive/v2/python/latest/drive_v2.files.html#get

我正在阅读有关该主题的信息以帮助您,当我发现PyDrive项目时,它可以隐藏所有复杂的部分。如果您已经了解PyDrive,我可以问一下为什么您不想使用它?如果您之前从未听说过PyDrive,我可以建议您使用它。 :) - Nil
@Nil,这是我第一次听说PyDrive。看起来很不错,我会尝试使用它并看看我能做到什么 =) - alvas
好的。告诉我进展如何。如果对你有用,我可以创建一个模拟答案,这将是我的第一个悬赏! - Nil
我相信使用PyDrive有更好的方法来处理事情。我似乎无法轻松地转储和读取JSON / PK。我一直在将collection.Counters作为str放入txt文件中并上传到云端,然后使用ast读取它们。这种方法有点混乱,但基本上可以工作。 - alvas
1个回答

6

使用PyDrive

我测试了PyDrive,认为它非常简单易懂。以下是我所做的:

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

gauth = GoogleAuth()
gauth.LocalWebserverAuth()

drive = GoogleDrive(gauth)

# Upload a json file (will be identical for a pickle file)
json_file = drive.CreateFile()
json_file.SetContentFile('wopwop.json')
json_file.Upload() # Files.insert()
print json_file['title'], json_file['id']

# Download the same json file
same_json_file = drive.CreateFile({'id': json_file['id']})
same_json_file.GetContentFile('test.json')  # Save Drive file as a local file

这段代码有两个“问题”:

  • 每次使用它时,它都会在浏览器中询问您是否同意。阅读此页面以使其记住您的答案。
  • 正如您所看到的,您需要记住文件的唯一标识符(id)。您可以将它们放入数据库或本地json文件中。您也可以使用PyDrive来列出所有匹配查询的文件,从而给出其id。

没有PyDrive

如果您不想使用PyDrive,我强烈建议您阅读其代码。如果我必须这样做,我会在pydrive.files中放置3个断点(或打印):

  • _FilesInsertself.auth.service.files().insert(**param).execute()
  • _FilesUpdateself.auth.service.files().update(**param).execute()
  • _DownloadFromUrlself.auth.service._http.request(url)行和构造函数中查看他如何获取url(在self.metadata中)

您已经在sample.py中下载了代码并拥有service,因此您只需要知道param字典中的内容即可了解正在发生的情况。

但是,您应该使用PyDrive ;)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接