最适合Github API v3的python库

2024-04-27 23:31:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为Github APIv3寻找一个适合我的python库。

我找到了GH API docs中提到的一个库(python-github3)。在ipython玩了一两个小时后,我发现它真的不适合探索/工作。我又看了看,发现至少有很多人试图写这样一个图书馆。更有前途的(一瞥)是PyGithubanother python-github3,这显然与第一个不同。

在接下来的几天里,我要一个接一个地尝试一个图书馆之前,我想问问SO社区是否有一个公认的、明确的、显而易见的图书馆选择?

我不喜欢第一个库那种(对我来说)获取数据的非直观方式——有些东西是作为属性获取的,有些是作为方法的返回值获取的,返回值是一些复杂的对象,必须进行分页和迭代,等等

在这方面,PyGithub乍一看就更吸引人了—很明显,它深入到对象层次结构中,然后得到包含所需内容的属性:

for repo in g.get_user().get_repos(): print repo.name

那么,有智慧的珍珠可以分享吗?我知道我没有足够的技能来快速判断图书馆的质量,这就是为什么我转向了SO社区。

编辑:fwiw,我最终使用了PyGithub。它工作得很好,而且作者很容易接受反馈和错误报告。:-)


Tags: 对象githubapidocsget属性so图书馆
3条回答

文档对于PyGitHub来说很糟糕,但是产品很棒。下面是一个快速示例,用于实际检索文件、在文件开头使用新注释更改文件并将其提交回

from github import Github
gh = Github(login_or_token='.....', base_url='...../api/v3')
user = gh.get_user()
repo = user.get_repo("RepoName")
file = repo.get_file_contents("/App/forms.py")
decoded_content = "# Test " + "\r\n" + file.decoded_content
repo.update_file("/"RepoName"/forms.py", "Commit Comments", decoded_content, file.sha)

最后,我使用了PyGithub。它工作得很好,而且作者很容易接受反馈和错误报告。:-)

(从我的编辑改为原来的问题,以获得更好的可见性)

既然您提到您是一个初级的python程序员,我建议您首先尝试使用不带任何Github库的JSON API。这真的没那么难,而且它在以后的编程生活中将对您有很大帮助,因为相同的方法可以应用到任何JSON API。尤其是如果试用图书馆似乎需要几天的时间。

我不是说某些库不容易使用,我只是说,从长远来看,直接使用API的额外努力可能是值得的。至少它能帮助你理解为什么有些库看起来“不直观”(如你所说)。

获取django存储库创建时间的简单示例:

import requests
import json
r = requests.get('https://api.github.com/repos/django/django')
if(r.ok):
    repoItem = json.loads(r.text or r.content)
    print "Django repository created: " + repoItem['created_at']

这是使用流行的requests library。在代码中,您自然也需要处理错误情况。

如果您需要使用身份验证进行访问,则会更复杂一些。

相关问题 更多 >