这是我对stackoverflow的第一个问题。所以要善待,如果我不是主题或精确,并帮助我改善下一次。
我正在尝试使用pyGithub通过Python3修改和存在Github Gist。 我创建了一个API令牌并且验证工作正常,但我很想编辑Gist。我找不到一个恰当的例子,这让我很清楚。
这是我的代码:
from github import Github
g = Github("XXX")
test2 = {"description": "the description for this gist",
"files": {"filter": {"content": "updated file contents"},
"Task": {"filename": "new_name.txt",
"content": "modified content"},
"new_file.txt": {
"content": "a new file"
}
}
}
g.get_gist(id="b2c5668fefe1f2e80252aabf4ef4e96c").edit(test2)
这是我收到的错误消息:
Traceback (most recent call last):
File "gist.py", line 15, in <module>
g.get_gist(id="b2c5668fefe1f2e80252aabf4ef4e96c").edit(test2)
File "/Users/DSpreitz/ogn-silentwings/venv/lib/python3.6/site-packages/github/Gist.py", line 249, in edit
assert description is github.GithubObject.NotSet or isinstance(description, str), description
AssertionError: {'description': 'the description for this gist', 'files': {'filter': {'content': 'updated file contents'}}}
我在这里找到了pygithub lib的一些描述: pyGithub Docu
这是我要修改的要点:Gist
非常感谢任何有助于解决此问题的帮助。
星
答案 0 :(得分:0)
此代码的主要问题是它将字典传递给Gist.edit
。 Gist.edit
接受关键字参数。
edit(description = NotSet,files = NotSet)
所以它应该被称为g.edit(description="new description", files=...)
。关于files
,相同的文档说:
files - 字符串到github.InputFileContent.InputFileContent
所以files
参数可能如下所示:
{"foo.txt": github.InputFileContent(content="bar")}
总结:
import github
token = "..." # https://github.com/settings/tokens
gh = github.Github(token)
gist = gh.get_gist("f04c4b19919c750602f4d0c5f7feacbf")
gist.edit(
description="new description",
files={"foo.txt": github.InputFileContent(content="bar")},
)
答案 1 :(得分:0)
如果使用pyGithub lib不是硬约束,那么我建议使用同样用python编写的gifc gist客户端。因此,根据您的情况,通过pip安装(克隆后)后,可以按照以下步骤进行编辑或更新要点-
迭代编辑所有(或一些)文件
gifc update ffd2f4a482684f56bf33c8726cc6ae63 -i vi
get
方法中获取主ID 更改说明
gifc update ffd2f4a482684f56bf33c8726cc6ae63 -cd "New description"
get
方法中获取主ID 在 nano , vim 或 gedit 等编辑器中交互式地编辑文件内容/ p>
gifc update ffd2f4a482684f56bf33c8726cc6ae63 -f file_to_update.md
gifc update ffd2f4a482684f56bf33c8726cc6ae63 -f file_to_update.md -cd "New description"