0

我有一个 gist(csv 格式),它每天更新并包含n 个修订。每个修订数据彼此不同。

我需要知道每个修订之间的区别,所以我使用 gist api 来检索可以保存在 csv 中的修订

我的要求:

  1. 如何下载并保存每个 url csv 即 example.csv 具有不同的名称?
  2. 如何获得每个修订版本的差异?

在这里发现如何下载文件。我尝试使用urllib,请求pypackages,但我不知道我在哪里。谢谢

gist_ids = 'abc'

def main():
    gh = github3.login(
        token=os.environ.get('my_token'),
        url='  ')
    my_gist = gh.gist(gist_ids)
    for gist_commit in my_gist.commits():
        resp_str= gist_commit.get_gist().as_json()
        resp_json = json.loads(resp_str)
        resp_url = resp_json['files']['example.csv']['raw_url']
    print resp_url

if __name__ == '__main__':
    main()

O/p:我有 4 个修订版,所以它显示了 4 个 urlhttps://github.com/gist/eec70654d178a8e1fe497d0bce94e0db/raw/5c058121cc4f289773b7013208ca5c5b0d97ba33/example.csv https://github.com/gist/eec70654d178a8e1fe497d0bce94e0db/raw/cfb04e18bdf18bf7ab0b708951f62d2095c49f7d/example.csv https://github.com/gist/eec70654d178a8e1fe497d0bce94e0db/raw/a20174f568129df4348d355eb0d6e378db7fa646/example.csv https://github.com/gist/eec70654d178a8e1fe497d0bce94e0db/raw/137c57ef411067564341d389571dab2da070c828/example.csv

4

1 回答 1

0

所以你把一些事情复杂化了。github3.py 返回的每个对象都有你想要的信息。

我在下面获取了您的代码并稍作修改。总结

  1. 我删除了 的用法,as_json()因为强制数据进出字符串是没有意义的。如果你想要一本字典,你可以使用as_dict().

  2. 接下来,我使用 gist 的提交历史记录并使用它来查找每个修订版的文件。

  3. 使用 GistHistory 对象和实际的 GistFile 对象,我构造了您的文件名以保存它们,因此它们看起来像5c058121cc4f289773b7013208ca5c5b0d97ba33-example.csv

  4. 最后,我使用 GistFile 对象来实际检索文件内容并将其保存到磁盘

gist_ids = 'abc'
   
def main():
    gh = github3.login(
        token=os.environ.get('my_token'),
        url='  ')
    my_gist = gh.gist(gist_ids)
    for gist_commit in my_gist.commits():
        gist = gist_commit.get_gist()
        gist_file = [file for file in gist.files() 
                     if file.filename == 'example.csv']
        filename = '{}-{}'.format(gist_commit.version, gist_file.filename)
        with open(filename, 'wb') as fd:
            fd.write(gist_file.content())
        print filename
于 2017-02-08T12:28:02.223 回答