【问题标题】:urllib.urlretrieve file python 3.3urllib.urlretrieve 文件 python 3.3
【发布时间】:2014-02-05 22:42:50
【问题描述】:

我知道几周前我在某个地方看到过答案,但现在找不到了。

Python 3.3 中的简单 urllib.urlretrieve。你怎么做呢?我正在尝试下载 mp4/html(页面不存在)方案,如果页面不存在,则为 mp4(如果文件大小太小,我可以删除文件,否则保留) .

我的代码运行良好,完全符合我在 2.7 中的要求,但在 3.3 中不起作用。

我正在处理两个版本的 Python 之间让我头疼的 Tkinter 和 urllib。 Tkinter 在 3.3 中可以正常工作,但 urllib 不能,并且 urllib 在 2.7 中可以正常工作,但 Tkinter 不能。如何在 3.3 中正确下载?

我知道 3.3 更改了 urllib,但我找不到一两周前看到的内容来指导我正确的方向。

当我添加 Tkinter 转换时,2.7 几乎什么也没做,而 3.3 刚刚出现并给我 urllib 没有属性 'urlretrieve;。我更喜欢 3.3。

【问题讨论】:

  • 请发布您在 2.7 中工作的代码。
  • 在 Python 3 中 urlretrieve 在 urllib.request 中。
  • 我意识到并在尝试 import urllib.request 然后是 urllib.request.urlretrieve 时打败了自己。它的功能不一样。它没有出现并下载 html 文件,它的大小告诉我它不是我正在寻找的 mp4 文件,而是不断出现并给我 HTTTPError: HTTP Error 404 Not Found。在 2.7 中它会下载我删除的 html 文件,在 3.3 中它只是将我标记回错误。有办法解决吗?
  • 对不起,只是更加关注下面的答案,它部分工作,但我确实看到我还有另一个问题要处理。我正在线程内部执行此操作。它现在给我错误“未定义全局名称“urllib”。我必须导入到每个线程中吗?
  • 请注意,urlretrieve 被专门称为“遗留函数”,可能很快就会在文档中被弃用。在 2.7 中,它位于“遗留模块”urllib 中,不应在新代码中使用。那么……你为什么首先使用它?

标签: python tkinter


【解决方案1】:

在 Python 3.x 中,urlretrieve 函数位于 urllib.request 模块中:

>>> from urllib import urlretrieve
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name urlretrieve
>>>
>>> from urllib.request import urlretrieve
>>> urlretrieve
<function urlretrieve at 0x023C2390>
>>>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 2015-09-14
    • 2016-11-16
    • 1970-01-01
    相关资源
    最近更新 更多