我有一个小的实用程序,可以用来按计划从网站上下载MP3,然后构建/更新我显然已添加到iTunes的播客XML文件。

创建/更新XML文件的文本处理是用Python编写的。 我在Windows .bat文件中使用wget下载实际的MP3。 我更希望将整个实用程序用Python编写。

我一直在努力寻找一种方法来实际下载Python中的文件,因此为什么要诉诸wget 。

那么,如何使用Python下载文件?

#1楼

在2012年,使用python请求库

>>> import requests

>>>

>>> url = "http://download.thinkbroadband.com/10MB.zip"

>>> r = requests.get(url)

>>> print len(r.content)

10485760

您可以运行pip install requests来获取它。

与API相比,请求具有许多优势,因为API更加简单。 如果必须执行身份验证,则尤其如此。 在这种情况下,urllib和urllib2非常不直观且令人痛苦。

2015-12-30

人们对进度条表示钦佩。 肯定很酷。 现在有几种现成的解决方案,包括tqdm :

from tqdm import tqdm

import requests

url = "http://download.thinkbroadband.com/10MB.zip"

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

with open("10MB", "wb") as handle:

for data in tqdm(response.iter_content()):

handle.write(data)

这本质上是30个月前描述的实现@kvance。

#2楼

用于Python 2/3的PabloG代码的改进版本:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from __future__ import ( division, absolute_import, print_function,

unicode_literals )

import sys, os, tempfile, logging

if sys.version_info >= (3,):

import urllib.request as urllib2

import urllib.parse as urlparse

else:

import urllib2

import urlparse

def download_file(url, dest=None):

"""

Download and save a file specified by url to dest directory,

"""

u = urllib2.urlopen(url)

scheme, netloc, path, query, fragment = urlparse.urlsplit(url)

filename = os.path.basename(path)

if not filename:

filename = 'downloaded.file'

if dest:

filename = os.path.join(dest, filename)

with open(filename, 'wb') as f:

meta = u.info()

meta_func = meta.getheaders if hasattr(meta, 'getheaders')

else meta.get_all

meta_length = meta_func("Content-Length")

file_size = None

if meta_length:

file_size = int(meta_length[0])

print("Downloading: {0} Bytes: {1}".format(url, file_size))

file_size_dl = 0

block_sz = 8192

while True:

buffer = u.read(block_sz)

if not buffer:

break

file_size_dl += len(buffer)

f.write(buffer)

status = "{0:16}".format(file_size_dl)

if file_size:

status += " [{0:6.2f}%]".format(file_size_dl * 100

/ file_size)

status += chr(13)

print(status, end="")

print()

return filename

if __name__ == "__main__": # Only run if this file is called directly

print("Testing with 10MB download")

url = "http://download.thinkbroadband.com/10MB.zip"

filename = download_file(url)

print(filename)

#3楼

为此,在纯Python中编写了wget库。 从2.0版开始, urlretrieve具有这些功能 。

#4楼

这可能有点晚了,但是我看到了pabloG的代码,不禁添加了一个os.system('cls')使其看上去真棒! 看看这个 :

import urllib2,os

url = "http://download.thinkbroadband.com/10MB.zip"

file_name = url.split('/')[-1]

u = urllib2.urlopen(url)

f = open(file_name, 'wb')

meta = u.info()

file_size = int(meta.getheaders("Content-Length")[0])

print "Downloading: %s Bytes: %s" % (file_name, file_size)

os.system('cls')

file_size_dl = 0

block_sz = 8192

while True:

buffer = u.read(block_sz)

if not buffer:

break

file_size_dl += len(buffer)

f.write(buffer)

status = r"%10d [%3.2f%%]" % (file_size_dl, file_size_dl * 100.

/ file_size)

status = status + chr(8)*(len(status)+1)

print status,

f.close()

如果在Windows以外的环境中运行,则必须使用“ cls”以外的其他名称。 在MAC OS X和Linux中,应该“清楚”。

#5楼

源代码可以是:

import urllib

sock = urllib.urlopen("http://diveintopython.org/")

htmlSource = sock.read()

sock.close()

print htmlSource

python下载后如何使用-如何使用Python通过HTTP下载文件相关推荐

  1. android下载后的app自动安装,Android 7.0 下载APK后自动安装

    随着Android版本越来越高,Android对隐私的保护力度也越来越大.这些隐私权限的更改在为用户带来更加安全的操作系统的同时也为开发者带来了一些新的任务.如何让你的APP能够适应这些改变而不是崩溃 ...

  2. python下载后如何使用-如何使用Python通过HTTP下载文件?

    import urllib urllib.urlretrieve ("http://www.example.com/songs/mp3.mp3", "mp3.mp3&qu ...

  3. python下载后如何使用-如何使用python下载文件?

    解决方案:from os.path import basename from urlparse import urlsplit def url2name(url): return basename(u ...

  4. python安装后怎么编程-怎么查看python安装路径

    Python是一种脚本语言,有朋友在安装Python编程环境时没有注意在哪装的,也就是路径.下面小编将带大家一起来了解一下如何查看Python安装路径. 有以下几种方式查看Python安装路径: 1. ...

  5. python学会后再学c_目前python熟练 ,想再学golang 需要先学c吗?

    不需要先学C golang借鉴了很多语言的优秀特质,但也自成一体,相对C来说更加简单.工程化. 会python,学习golang很简单. 每种通用语言的基本都是类似的,都要能够处理数字.字符串.数组. ...

  6. python做后端的优势_使用Python进行应用程序后端开发有什么好处?

    Python的优点:1.简单易学Python 编程语言最大的优点之一,是其具有伪代码的特质,它可以让我们在开发 Python 程序时,专注于解决问题,而不是搞明白语言本身.2.开源Python 是 F ...

  7. python做后端开发的优点_python作为后端语言的优缺点

    Python 是动态强类型语言,很多人都误认为是弱类型语言,其实是错误的.动态是指在运行期确定类型(静态则是在编译期确定类型).强类型指的是在没有强制类型转化前,不允许两种不同类型的变量相互操作(也就 ...

  8. python中文下载_Python进阶中文PDF[17.1MB] 高清下载

    < Python进阶>是<Intermediate Python>的中译本,对Python中的装饰器与推导式等高级用法做了详细说明,适合于掌握Python基础后的进一步提高. ...

  9. 用python处理excel表格_如何用python处理excel数据 | 用python处理excel表格数据类型

    python 读取EXCEL文件中的数据格式 扩展库 xlrd 读excle xlwt 写excle 直上搜就能下载 下载后使用 import xlrd 就可以读excle了 打开文件: xls = ...

最新文章

  1. android json转db,Android Room:将json结果转换为db对象的有效方法
  2. installer,source,binary,archive 版本区别
  3. UVa 1607 (二分) Gates
  4. WPF自定义控件(1)——仪表盘设计[1]
  5. 从源码中编译安装gmt官方开发版(优先体验最新功能)
  6. 洛谷 - P4755 Beautiful Pair(笛卡尔树+主席树)
  7. 2019-06-12 Java学习日记之JDBC
  8. 博客园的博客终于开通了
  9. CCIE-LAB-第五篇-SDN-SD-WAN-BGP-OMP(sdwan版的路由协议)
  10. 优秀!303篇论文获2020年度“优秀博士学位论文”!
  11. IO多路复用中select、poll、epoll之间的区别
  12. AMD: Developer Guides, Manuals ISA Documents
  13. 弃 Windows 转投 Linux,微软全面进军 IoT!
  14. android 拉伸图片
  15. 【先到先得】这款课程版 iPhone XR 免费送给你!
  16. windows2008 RD授权管理器下空的没服务器(授权管理器无法链接到许可证服务器)问题处理...
  17. Python 中的 any(Python/any)
  18. Hibernate写代码流程小结
  19. 【洛谷 2958】木瓜的丛林
  20. mySQL中col是什么意思_MySQL中count(*)、count(1)和count(col)的区别汇总

热门文章

  1. Spec Explorer 工具学习
  2. php学习之------[运算符相关概念]
  3. [Ubuntu]更改所有子文件和子目录所有者权限
  4. 20155339 Exp6 信息搜集与漏洞扫描
  5. 5.springMVC数据回显(就是后台向页面传参的过程)
  6. 【高德地图开发1】---简介
  7. 详解jQuery对象与DOM对象的相互转换
  8. python从入门到放弃系列恶搞短片-太惨!学Python方法用错,直接从入门到放弃!...
  9. python27安装教程-Python2和Python3安装教程
  10. python代码示例百度云-python利用百度云接口实现车牌识别的示例