使用与要点修订不同的名称保存 csv 文件并显示差异
Save csv file with different name from revisions of gist and show the difference
我有一个要点(csv 格式),它每天更新并包含 n 修订。每个修订数据彼此不同。
我需要知道每个修订版之间的区别,所以我使用 gist api 检索可以保存在 csv 中的修订版
我的要求:
- 如何下载并保存每个 url csv,即 example.csv 并使用不同的名称?
- 怎样才能得到每个版本的差异?
点击这里如何下载文件。我尝试使用 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返回的每个对象都有你想要的信息。
我已将您的代码放在下面并稍作修改。总结
我删除了 as_json()
的用法,因为将数据强制转换为字符串没有意义。如果你想要一本字典,你可以使用 as_dict()
.
接下来,我使用了 gist 的提交历史并使用它来查找每个修订版的文件。
使用 GistHistory 对象和实际的 GistFile 对象,我构造你的文件名来保存它们,这样它们看起来就像 5c058121cc4f289773b7013208ca5c5b0d97ba33-example.csv
最后,我使用 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
我有一个要点(csv 格式),它每天更新并包含 n 修订。每个修订数据彼此不同。
我需要知道每个修订版之间的区别,所以我使用 gist api 检索可以保存在 csv 中的修订版
我的要求:
- 如何下载并保存每个 url csv,即 example.csv 并使用不同的名称?
- 怎样才能得到每个版本的差异?
点击这里如何下载文件。我尝试使用 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返回的每个对象都有你想要的信息。
我已将您的代码放在下面并稍作修改。总结
我删除了
as_json()
的用法,因为将数据强制转换为字符串没有意义。如果你想要一本字典,你可以使用as_dict()
.接下来,我使用了 gist 的提交历史并使用它来查找每个修订版的文件。
使用 GistHistory 对象和实际的 GistFile 对象,我构造你的文件名来保存它们,这样它们看起来就像
5c058121cc4f289773b7013208ca5c5b0d97ba33-example.csv
最后,我使用 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