【问题标题】:Cannot download latest version of a file in Python 3.x无法在 Python 3.x 中下载最新版本的文件
【发布时间】:2020-04-22 14:20:59
【问题描述】:

我已经阅读了很多 requestsurllib 教程,这几乎是犯罪,但由于某种原因我无法下载文件的最新版本。

会发生什么:

  1. 成功下载最新版bglug.py。一切都像魅力一样。

  2. 我在 GitHub 上更新 bglug.py 以显示最新的详细信息。

  3. 当我再次运行更新机制时,它不会获取文件的最新版本,但我知道它确实会获取文件,因为我将其设置为首先删除文件(仅用于测试目的)当我检查时,文件就在那里。

  4. 而且还是要到第二天左右才下载最新版本!

这是服务器端缓存吗? Python/requests 是否有我必须清除的网络缓存才能获取最新版本的文件?

我的代码如下:

import requests, os

os.remove("bglug.py")

url = "https://raw.githubusercontent.com/TheTechRobo/bglugwatch-cleanslate/master/bglug.py"

r = requests.get(url, stream=True)

with open("bglug.py", "wb") as Writefile:

    for chunk in r.iter_content(chunk_size=1024):

        if chunk:

            Writefile.write(chunk)

其他人有同样的问题吗?谢谢!

【问题讨论】:

  • 我们如何验证/知道文件内容何时发生了变化?
  • 为什么你没有 git,而不是抓取 github?
  • @ChrisDoyle 这只是在测试运行期间,所以我只使用cat
  • @garglblarg 我使用的是 git,但是由于 git 存储文件的方式,文件大小变得越来越大。
  • @TheTechRobo36414519 看起来这只是 GitHub 如何处理原始文件的一部分。 raw.githubusercontent.com 上的数据需要时间来更新以匹配 github.com 上的文件。我自己进行了一些测试并弄清楚了这一点。基本上,您无法在代码中更改任何内容以使这种“缓存”消失。这不是 Python 或 requests 的一部分。

标签: python python-3.x http download python-requests


【解决方案1】:

@NoahBroyles 说我无能为力,因为raw.githubusercontent.com 需要时间来更新。因此,使用我的程序的用户可能会有稍晚的结果,但我可以通过每次提交时将提交推送到网站然后让requests 抓取 来解决这个问题。非常感谢@NoahBroyles! :) :)

【讨论】:

    猜你喜欢
    • 2012-11-13
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 2020-09-12
    • 1970-01-01
    相关资源
    最近更新 更多