gpt4 book ai didi

python - 如何使用 Pandas 或 Requests 在 Python 中访问私有(private) Github Repo 文件 (.csv)

转载 作者:行者123 更新时间:2023-12-04 11:23:43 26 4
gpt4 key购买 nike

我不得不将我的公共(public) Github 存储库切换为私有(private)并且无法访问文件,而不是使用公共(public) Github 存储库能够访问的访问 token 。

我可以使用 curl 访问我的私有(private)仓库的 CSV:
'''
curl -s https://{token}@raw.githubusercontent.com/username/repo/master/file.csv

'''

但是,我想在我的 python 文件中访问这些信息。当 repo 公开时,我可以简单地使用:
'''
网址 = ' https://raw.githubusercontent.com/username/repo/master/file.csv '
df = pd.read_csv(url, error_bad_lines=False)

'''

由于 repo 是私有(private)的,这不再有效,而且我找不到在 python 中下载此 CSV 而不是从终端 pull 的解决方法。

如果我尝试:
'''
requests.get(https://{token}@raw.githubusercontent.com/username/repo/master/file.csv)
'''
我收到 404 响应,这与 pd.read_csv() 发生的事情基本相同。如果我单击原始文件,我会看到创建了一个临时 token 并且 URL 是:
'''
https://raw.githubusercontent.com/username/repo/master/file.csv?token=TEMPTOKEN
'''
有没有办法附加我的永久私有(private)访问 token ,以便我可以随时从 github 中提取这些数据?

最佳答案

是的,您可以在 Python 中下载 CSV 文件,而不是从终端 pull 。为了实现这一点,您可以使用带有“请求”和“io”模块帮助的 GitHub API v3。下面的可重现示例。

import numpy as np
import pandas as pd
import requests
from io import StringIO

# Create CSV file
df = pd.DataFrame(np.random.randint(2,size=10_000).reshape(1_000,10))
df.to_csv('filename.csv')

# -> now upload file to private github repo

# define parameters for a request
token = 'paste-there-your-personal-access-token'
owner = 'repository-owner-name'
repo = 'repository-name-where-data-is-stored'
path = 'filename.csv'

# send a request
r = requests.get(
'https://api.github.com/repos/{owner}/{repo}/contents/{path}'.format(
owner=owner, repo=repo, path=path),
headers={
'accept': 'application/vnd.github.v3.raw',
'authorization': 'token {}'.format(token)
}
)

# convert string to StringIO object
string_io_obj = StringIO(r.text)

# Load data to df
df = pd.read_csv(string_io_obj, sep=",", index_col=0)

# optionally write df to CSV
df.to_csv("file_name_02.csv")

关于python - 如何使用 Pandas 或 Requests 在 Python 中访问私有(private) Github Repo 文件 (.csv),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62164400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com