【问题标题】:How to download a file from GitHub using Python如何使用 Python 从 GitHub 下载文件
【发布时间】:2021-09-30 13:09:57
【问题描述】:

我不知道它之前是否发布过,但我在 Stackoverflow 和其他网络上都找不到它

我正在开展一个项目,我们需要实时数据集,这样我们就可以每天更新我们的数据库。我发现a GitHub repository 每天都会更新一个 csv 文件,我需要在运行代码时将其下载到本地。我该怎么做?

我们正在使用 Python 和 PostgreSQL

【问题讨论】:

  • 嗨 blackwings15 ,你看到我的回答了吗?我实际上认为它会对你有所帮助.. 如果你还没有,请看看它,并给我一些反馈。如果它有帮助,我会很高兴给我的答案一个赞成票????甚至选择它作为正确答案✅。干杯。
  • 嗨,Behdad,感谢您帮助我。由于我是该网站的新手并且声誉不超过 15,因此我无法对您的答案投票。但是,它说我的反馈已被记录下来。顺便说一句,BlackMath 提出的解决方案是我认为的完美解决方案。它工作得很好。老实说,我还没有尝试过其他解决方案
  • 哦,我明白了。我不知道。所以请在你达到15声望后考虑投票??????达到这一点只剩下 2 个声望。祝你一切顺利。 ????
  • 别担心。我一定会这样做的:)

标签: python database postgresql github


【解决方案1】:

您的问题已经有了答案,请查看以下链接:
How to download a file from Github using Requests

如果您只想下载文件,您需要使用原始链接: 页面顶部,这将是(例如):

https://raw.github.com/someguy/brilliant/master/somefile.txt
注意域名的变化,路径的blob/部分不见了。

尝试使用此代码下载COVID-2019 20-20ECDC 20(2020).csv 文件:

>>> import requests
>>> r = requests.get('https://github.com/owid/covid-19-data/blob/master/public/data/ecdc/COVID-2019%20-%20ECDC%20(2020).csv')
>>> 'Requests:' in r.text
True
>>> r.headers['Content-Type']
'text/html; charset=utf-8'
>>> r = requests.get('https://github.com/owid/covid-19-data/blob/master/public/data/ecdc/COVID-2019%20-%20ECDC%20(2020).csv')
>>> 'Requests:' in r.text
True
>>> r.headers['Content-Type']
'text/plain; charset=utf-8'

【讨论】:

    【解决方案2】:

    找到您想要的 csv 的路径 (raw format):

    csv_url = 'https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/latest/owid-covid-latest.csv'
    

    然后在 python 中读取它:

    df = pd.read_csv(csv_url, error_bad_lines=False)
    print(df)
    

    您现在可以使用以下命令更新您的 sql 数据库:

    df.to_sql('my_SQL_table', con=my_engine, if_exists='replace')
    

    【讨论】:

    • 为什么要使用 panadas?
    • OP 说“所以我们可以每天更新我们的数据库”.... 导入带有 pandas 的 csv(作为 df)可以让您轻松使用 pandas.DataFrame.to_sql 来管理 sql 更新。
    【解决方案3】:

    您可以通过使用请求库并使用来自 github 的文件链接下载 CSV 文件来自动执行此操作。只要它的文件是每次运行时更新的文件,它就应该是最新的数据。

    import requests
    
    url = 'https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/owid-covid-data.csv'
    r = requests.get(url, allow_redirects=True)
    
    open('data.csv', 'wb').write(r.content)
    

    【讨论】:

      猜你喜欢
      • 2020-09-11
      • 2020-06-23
      • 2018-01-01
      • 1970-01-01
      • 2016-01-09
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      相关资源
      最近更新 更多