解决方案 1:
此解决方案特定于您的用例:
使用下面的pip 命令安装PyGithub 包:
!pip install PyGithub
通过单击Generate new token 从此page 生成 Github API 令牌,并将该令牌作为字符串传递到以下代码中 token 的位置,以建立与 Github 的连接:
from github.MainClass import Github
g = Github(token)
现在您已使用您的凭据连接到 Github,您可以访问您的所有 repo 内容以及其他公共 repo。
加载您的 CSV 文件所在的存储库:
repo = g.get_repo("CSSEGISandData/COVID-19")
获取存储在您的CSV 文件所在目录中的文件对象列表:
file_list = repo.get_contents("csse_covid_19_data/csse_covid_19_daily_reports")
由于存储这些 CSV 文件的目录还包含一个 .gitignore 文件和一个 README.md 文件,并且文件命名的格式为“mm-dd-yyyy”,因此 README.md 出现在最后并且最后一秒的文件是您最近更新的文件。要访问它,请运行以下代码:
github_dir_path = 'https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_daily_reports/'
file_path = github_dir_path + str(file_list[-2]).split('/')[-1].split(".")[0]+ '.csv'
使用pandas的@987654337@方法从指定路径加载数据。
import pandas as pd
df = pd.read_csv(file_path, error_bad_lines=False)
解决方案 2:
如果你想手动指定路径,试试这个代码:
通过右击raw从Github获取你的CSV文件的路径,如下所示,并将其值分配给file_path:
file_path = 'https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_daily_reports/03-08-2020.csv'
使用pandas的@987654342@方法从指定路径加载数据:
import pandas as pd
df = pd.read_csv(file_path, error_bad_lines=False)
解决方案 3:
如果你想自动指定路径,试试这个代码:
设置一个您想要刷新代码的时间,并将下面给出的解决方案与之集成。
由于您知道存储最新文件的目录以及新文件添加到该目录的频率,因此您可以以 mm-dd-yyyy 格式动态更改当前日期的日期:
from datetime import date
file_date = str(date.today().strftime('%m-%d-%Y'))
file_date
输出:03-11-2020
同样,如果您想在昨天的日期运行代码,只需更改 file_date 的值即可:
from datetime import date, timedelta
file_date = str((date.today() - timedelta(days = 1)).strftime('%m-%d-%Y'))
file_date
输出:03-10-2020
由于当前在该目录中,最后上传的文件是 2020 年 3 月 9 日,因此我们将使用该日期:
from datetime import date, timedelta
file_date = str((date.today() - timedelta(days = 2)).strftime('%m-%d-%Y'))
file_date
输出:03-09-2020
动态生成文件路径:
github_dir_path = 'https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_daily_reports/'
file_path = github_dir_path + file_date + '.csv'
使用pandas的@987654351@方法从指定路径加载数据。
import pandas as pd
df = pd.read_csv(file_path, error_bad_lines=False)