最适合Github API v3的python库
我正在寻找适合我的Github APIv3的Python库。 背景:我是一个基于Matlab和C ++的背景的python noob,最近学会了使用python-matplotlib。
我发现在GH API文档中提到了一个库(python-github3) 。 在ipython中玩了一两个小时之后,我发现它真的很不直观。 我再看了一下,发现有不less人试图写这样一个图书馆。 PyGithub和另外一个python-github3看起来更有希望(一目了然),显然与第一个不同。
在接下来的几天,在图书馆之后连续试用图书馆之前,我想问一下SO社区是否有一个对图书馆公认的,明确的,明显的select?
我不喜欢的第一个库是(对我)不直观的方式来获取数据 – 一些东西,你得到的属性,一些你作为返回值的方法,返回值是一些复杂的对象,必须被分页和迭代,等等
在这方面,PyGithub乍一看看起来更吸引人 – 清楚地向下钻取一个对象层次结构,然后到达包含你想要的属性的属性:
for repo in g.get_user().get_repos(): print repo.name
那么,任何珍贵的智慧分享? 我知道我没有足够的技能来快速判断图书馆的质量,这就是为什么我要转向SO社区。
编辑:fwiw,我结束了使用PyGithub 。 它运行良好,作者真正接受反馈和错误报告。 🙂
既然你提到你是一个初学Python的程序员,我build议你先尝试使用没有任何Github库的JSON API。 这真的不是那么困难,它将在编程生涯中帮助你很多,因为同样的方法可以应用于任何JSON API。 特别是如果看图书馆试用需要几天的时间。
我并不是说一些图书馆使用起来不方便,我只是说从长远来看,直接使用API的额外努力可能是值得的。 至less它会帮助你理解为什么有些图书馆显得“不直观”(正如你所说的)。
简单的例子来获取django仓库的创build时间:
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']
这是使用stream行的请求库 。 在你的代码中,你自然也需要处理错误情况。
如果您需要使用身份validation访问,则会稍微复杂一些。
最后,我结束了使用PyGithub 。 它运行良好,作者真正接受反馈和错误报告。 🙂
(从我的编辑改编为原来的问题,更好的可见性)
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)
Libsaas非常适合初学者。 它有一个很好的文档 ,很容易使用,看例子 。 随意贡献。