使用与要点修订不同的名称保存 csv 文件并显示差异

Save csv file with different name from revisions of gist and show the difference

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

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

我的要求:

  1. 如何下载并保存每个 url csv,即 example.csv 并使用不同的名称?
  2. 怎样才能得到每个版本的差异?

点击这里如何下载文件。我尝试使用 urlib, request pypackages 但我不知道我在哪里 behind.Thanks

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 urls https://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

所以你 over-complicating 有些东西。 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