首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >给定wget命令的Python等效项

给定wget命令的Python等效项
EN

Stack Overflow用户
提问于 2014-06-22 07:46:49
回答 10查看 233.5K关注 0票数 91

我正在尝试创建一个Python函数,它的作用与wget命令相同:

代码语言:javascript
复制
wget -c --read-timeout=5 --tries=0 "$URL"

-如果下载中断,则从您停止的位置继续。

-如果超过5秒没有新数据传入,请放弃并重试。给定

这意味着它将从中途停止的地方再次尝试。

-永远重试。

在串联中使用的这三个参数会导致下载不会失败。

我想在我的Python脚本中复制这些功能,但我不知道从哪里开始...

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2014-06-22 08:45:35

urllib.request

应该行得通。只需在while(未完成)循环中设置它,检查本地文件是否已经存在,如果它确实发送带有RANGE标头的GET,则指定您下载本地文件的距离。确保使用read()附加到本地文件,直到出现错误。

这也可能是

Python urllib2恢复下载在网络重新连接时不起作用

票数 40
EN

Stack Overflow用户

发布于 2015-02-04 12:15:07

还有一个不错的Python模块,名为

这非常容易使用。请记住,该包自2015年以来一直没有更新,并且没有实现许多重要功能,因此使用其他方法可能会更好。这完全取决于您的用例。对于简单的下载,这个模块就是工单。如果你需要做更多的事情,还有其他的解决方案。

代码语言:javascript
复制
>>> import wget
>>> url = 'http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download(url)
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'

尽情享受吧。

但是,如果

不起作用(我在处理某些PDF文件时遇到问题),请尝试

此解决方案

..。

编辑:

您还可以使用

参数以使用自定义输出目录而不是当前工作目录。

代码语言:javascript
复制
>>> output_directory = 
>>> filename = wget.download(url, out=output_directory)
>>> filename
'razorback.mp3'
票数 121
EN

Stack Overflow用户

发布于 2014-06-22 10:44:55

代码语言:javascript
复制
import urllib2
import time

max_attempts = 80
attempts = 0
sleeptime = 10 #in seconds, no reason to continuously try if network is down

#while true: #Possibly Dangerous
while attempts < max_attempts:
    time.sleep(sleeptime)
    try:
        response = urllib2.urlopen("http://example.com", timeout = 5)
        content = response.read()
        f = open( "local/index.html", 'w' )
        f.write( content )
        f.close()
        break
    except urllib2.URLError as e:
        attempts += 1
        print type(e)
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24346872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档