我有一个公共存储库,想用python(PyGithub库)将文件上传到该存储库。
我引用了SO中的以下代码:
import base64
from github import Github
from github import InputGitTreeElement
user = "GithubUsername"
password = "*********"
g = Github(user,password)
repo = g.get_user().get_repo('git-test')
file_list = [
'C:\\Users\jesse\Dropbox\Swell-Forecast\git-test\index.html',
'C:\\Users\jesse\Dropbox\Swell-Forecast\git-test\margin_table.html'
]
file_names = [
'index.html',
'margin_table.html'
]
commit_message = 'python update 2'
master_ref = repo.get_git_ref('heads/master')
master_sha = master_ref.object.sha
base_tree = repo.get_git_tree(master_sha)
element_list = list()
for i, entry in enumerate(file_list):
with open(entry) as input_file:
data = input_file.read()
if entry.endswith('.png'):
data = base64.b64encode(data)
element = InputGitTreeElement(file_names[i], '100644', 'blob', data)
element_list.append(element)
tree = repo.create_git_tree(element_list, base_tree)
parent = repo.get_git_commit(master_sha)
commit = repo.create_git_commit(commit_message, tree, [parent])
master_ref.edit(commit.sha)
但是我不想克隆repo,添加文件然后提交,而是直接上传文件。
是否有任何方法/示例代码可用于直接上传?
例如:
当前回购:
file1.txt
file2.txt
上传新文件:
file1.txt
file2.txt
myfolder/
|_ file3.txt
|_ file4.txt
3条答案
按热度按时间tv6aics11#
我已经为此创建了一个小的代码集。它的工作。分享它在这里,所以其他人可以从中受益。
示例代码:
此代码将上载文件/替换现有文件。
本地文件路径:
/tmp/file.txt
Github文件夹名称:
folder1/
This question也与此相关。
cgvd09ve2#
(note:未测试)
我认为你链接的代码能达到你的目的。
用ruby编写的This gist显示了一个非常类似的场景,但它具有显式命名为每个操作查询的API路由的额外优势(
create_tree
、create_commit
...)查看PyGithub库的文档:这些方法很可能是相同API调用的 Package 器。
thtygnil3#