Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python将数据推送到在线GitHub Repo_Python_Python 3.x_Windows_Github_Pygithub - Fatal编程技术网

使用Python将数据推送到在线GitHub Repo

使用Python将数据推送到在线GitHub Repo,python,python-3.x,windows,github,pygithub,Python,Python 3.x,Windows,Github,Pygithub,我正在寻求有关如何有效地利用Python提交单个文件并将其推送到在线GitHub存储库的信息 这个用例非常简单——我每天从API中提取一些数据一次,我想将提取的数据发送到在线回购 我目前正在使用,但我只能想象这会增加不必要的复杂性 我确信我没有成功仅仅是因为缺乏经验。然而,似乎没有任何关于这个主题的优秀教程(我发现)。到目前为止,我提出的唯一解决方案如下所示(主要是在堆栈溢出时从另一个用户处刷卡) 从github导入github 从github导入InputGitTreeElement def

我正在寻求有关如何有效地利用Python提交单个文件并将其推送到在线GitHub存储库的信息

这个用例非常简单——我每天从API中提取一些数据一次,我想将提取的数据发送到在线回购

我目前正在使用,但我只能想象这会增加不必要的复杂性

我确信我没有成功仅仅是因为缺乏经验。然而,似乎没有任何关于这个主题的优秀教程(我发现)。到目前为止,我提出的唯一解决方案如下所示(主要是在堆栈溢出时从另一个用户处刷卡)

从github导入github
从github导入InputGitTreeElement
def sendData(数据):
g=Github(“---------------------------------------------------”)
repo=g.get_user().get_repo(“--------------”)
文件列表=[“E://---------------------/test.txt”]
fileName=“test.txt”
提交消息=“使用Python测试提交”
master\u ref=回购获得git\u ref('heads/main')
master\u sha=master\u ref.object.sha
base_tree=repo.get_git_tree(master_sha)
elementList=list()
对于文件列表中的文件:
打开(文件)作为输入文件时:
data=input_file.read()
element=InputGitTreeElement(文件名为'100644','blob',数据)#https://docs.github.com/en/free-pro-team@最新/rest/reference/git#创建一棵树
elementList.append(元素)
tree=repo.create\u git\u tree(elementList,base\u tree)
parent=repo.get\u git\u commit(master\u sha)
commit=repo.create\u git\u commit(提交消息,树,[父])
主参考编辑(commit.sha)
此解决方案可以
提交
推送多个或单个文件,只要您将这些文件存储在本地并知道它们的文件路径

但是,我不知道如何使用在内存中打开且没有现有文件路径的文件,正如当前使用
sendData()
函数所要求的那样

以以下函数为例:

导入请求
导入json
def getData():
apiKey=“------------”
尝试:
response=requests.get('------------%s'%apiKey)
响应。针对_状态()提出_
#访问JSON内容
jsonResponse=response.json()
以open('data.json','w',encoding='utf-8')作为数据:
dump(jsonResponse,数据,确保ascii=False,indent=4)
返回数据
除了requests.exceptions.HTTPError作为http\u err:
打印(发生f'HTTP错误:{HTTP_err}')
除异常作为错误外:
打印(发生f'其他错误:{err}')
上述方法可以很好地从API中提取JSON响应,并
返回一个打开的JSON文件

但是,我现在需要将这个打开的json文件发送到我的在线GitHub repo。答案是先在本地保存,然后将“保存的文件”推送到GitHub

理想情况下,我只想将打开的JSON文件传递给
sendData()
函数,并让函数
commit
&
将文件推送到我的在线GitHub repo

我希望有一个更简单的解决方案可以将单个文件提交/推送到GitHub repo

我正在积极参与这个项目,所以这个问题会经常更新,直到找到合理的解决方案。如果有人有任何想法或意见,我将不胜感激

现状
导入请求
导入json
从github导入github
从github导入InputGitTreeElement
def getData():
apiKey=“-------------------------------------”
尝试:
response=requests.get('https://----------------.json?apiKey=%s“%apiKey”)
响应。针对_状态()提出_
#访问JSON内容
jsonResponse=response.json()
以open('data.json','w',encoding='utf-8')作为数据:
dump(jsonResponse,数据,确保ascii=False,indent=4)
返回数据
除了requests.exceptions.HTTPError作为http\u err:
打印(发生f'HTTP错误:{HTTP_err}')
除异常作为错误外:
打印(发生f'其他错误:{err}')
def sendData(新数据):
#GitHub访问令牌-仅限有限的公共回购访问
g=Github(“---------------------------------------------------------”)
repo=g.get_user().get_repo(------------)
fileName=“test data.json”
提交消息=“使用Python测试提交”
master\u ref=回购获得git\u ref('heads/main')
master\u sha=master\u ref.object.sha
base_tree=repo.get_git_tree(master_sha)
elementList=list()
element=InputGitTreeElement(文件名,'100644','blob',新数据)#https://docs.github.com/en/free-pro-team@最新/rest/reference/git#创建一棵树
elementList.append(元素)
tree=repo.create\u git\u tree(elementList,base\u tree)
parent=repo.get\u git\u commit(master\u sha)
commit=repo.create\u git\u commit(提交消息,树,[父])
主参考编辑(commit.sha)
def main():
data=getData()
发送数据(数据)
main()
电流误差
回溯(最近一次呼叫最后一次):
文件“”,第45行,在
文件“”,第43行,主
sendData中第33行的文件“”
文件“C:\Users\chris\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\Local Packages\Python38\site Packages\github\inputGitTreeeElement.py”,第58行,在__
断言内容为github.GithubObject.NotSet或isinstance(
断言者错误:

这能回答你的问题吗?你能详细解释一下“持续问题”是什么意思吗?这里还有一个使用子流程的例子:嗨,克里斯-欢迎这么做!如果你能发布一些你尝试过的东西的代码示例,它可能会帮助你获得更有用的反馈。
pyGithub
子流程
都是你可以使用的模块使用来完成你的目标,所以你可能需要的是关于特定问题的指导