首先,我是Python的总n00b。我显然是使用github-flask和烧瓶来从GitHub API中提取数据。我正在尝试使用contents_url
并检索文件。 GitHub API中的URL类似于:
// json
{
...
"contents_url": "https://api.github.com/repos/<org_name>/<repo_name>/contents/{+path}"
...
}
...当我尝试将其提供给github-flask实例时,我得到一个TypeError,“TypeError:request()得到了一个意外的关键字参数'path'”使用:
# python
contents = github.get(repo['contents_url'], path='.gitignore')
我很确定我错过了一些简单的东西。我不必诉诸字符串操作吗?
答案 0 :(得分:4)
Python推荐的字符串插值是.format
方法。只需进行一些小的更改,您的代码就可以使用它:
contents = github.get(repo['contents_url'].format(path='.gitignore'))
但是您还必须稍微改变contents_url
:
https://api.github.com/repos/<org_name>/<repo_name>/contents/{path}
请注意 - .format
基于花括号进行插值,因此任何文字花括号都需要进行转义。有关详细信息,请访问:https://docs.python.org/3/library/string.html#formatstrings
修改:正如您在下面的评论中提到的,该网址直接来自GitHub的API,您无法/不应该更改它。事实证明他们正在使用RFC 6570网址模板(请参阅https://developer.github.com/v3/#hypermedia)。如果您使用我在下面建议的uritemplate库,代码将如下所示:
from uritemplate import expand
# ...
contents = github.get(expand(repo['contents_url'], {'path': '.gitignore'}))