python网络编程之文件下载实例分析


Posted in Python onMay 20, 2015

本文实例讲述了python网络编程之文件下载实现方法。分享给大家供大家参考。具体如下:

真是越看越喜欢python啊,想要了解它提供的http和ftp下载功能,原来是如此的简单。

1、相应模块

ftplib模块定义了FTP类和一些方法,用以进行客户端的ftp编程。我们可用python编写一个自已的ftp客户端程序,用于下载文件或镜像站点。如果想了解ftp协议的详细内容,请参考RFC959或是查看python帮助吧。

Urllib模块提供了非常高级的接口来从网络上抓取数据,主要使用到的是urlopen函数,跟open函数功能比较相似,这里我们要用到urlretrieve()函数来实现从http服务器上下载文件。

2、实例实现FTP下载和上传

from ftplib import FTP
import sys
def ftpdownload(path,file):
  ftp = FTP()
  ftp.set_debuglevel(2)
  #打开调试级别2,显示详细信息
  ftp.connect('**IP**')
  #连接ftp服务器
  ftp.login(user,password)
  #输入用户名和密码
  print ftp.getwelcome()
  #显示ftp服务器的欢迎信息
  ftp.cwd(path)
  #选择操作目录
  bufsize = 1024
  #设置缓冲区大小
  file_handler = open(file,'wb').write
  #以写模式在本地打开文件
  strBuffer = 'RETR ' + file
  ftp.retrbinary(strBuffer,file_handler,bufsize)
  #接收服务器上文件并写入本地文件
  ftp.set_debuglevel(0) #关闭调试
  ftp.quit() #退出ftp服务器
if __name__ == '__main__':
  path1 = 'download/test/'
  file1 = 'test1.rar'
  if len(sys.argv) == 3:
    try:
      ftpdownload(sys.argv[1],sys.argv[2])
      #命令行输入文件在ftp上的路径和文件名,    
    except IOError:
      print "please input the correct path and filename"
  else:
    ftpdownload(path1,file1)

上传文件非常类似,对应的上传函数storbinary。

from ftplib import FTP
import sys,os
def ftpdownload(path,file):
  ftp = FTP()
  ftp.set_debuglevel(2)
  ftp.connect('**IP**')
  ftp.login(user,password)
  print ftp.getwelcome()
  ftp.cwd(path)
  bufsize = 1024
  file_handler = open(file,'rb')
  #读方式打开上传文件
  strBuffer = 'RETR ' + file
  ftp.storbinary(strBuffer,file_handler,bufsize)
  #上传文件
  ftp.set_debuglevel(0) 
  ftp.quit()
if __name__ == '__main__':
  path1 = 'download/test/'
  file1 = '4.jpg'
  if len(sys.argv) == 3:
    try:
      ftpdownload(sys.argv[1],sys.argv[2])      
    except IOError:
      print "please input the correct path and filename"
  else:
    ftpdownload(path1,file1)

3、实例实现HTTP下载

http下载真的是超级简单,一个函数就搞定,这里通过传入要下载的地址下载文件,并计算下载时间,我想的感觉是比较笨的计算时间的方法,不知道谁有高招呢?

import urllib
import sys
def download(url):
  starttime = datetime.datetime.now()
  print 'download start time is %s'% starttime
  urllib.urlretrieve(url,'test.exe')
  #开始下载,test.exe为下载后保存的文件名
  endtime = datetime.datetime.now()
  print 'download end time is %s'% endtime  
  print 'you download the file use time %s s' % (endtime - starttime).seconds
if __name__ == '__main__':
  if len(sys.argv) == 2:
    try:
      download(sys.argv[1])
    except IOError:
      print 'url not found'
  else:
    download('http://www.python.org/')

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python中os和shutil模块实用方法集锦
May 13 Python
python中获得当前目录和上级目录的实现方法
Oct 12 Python
Python程序员面试题 你必须提前准备!(答案及解析)
Jan 23 Python
TensorFlow高效读取数据的方法示例
Feb 06 Python
对numpy中的数组条件筛选功能详解
Jul 02 Python
在Python中字典根据多项规则排序的方法
Jan 21 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
python实现字符串完美拆分split()的方法
Jul 16 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
Dec 25 Python
浅析python表达式4+0.5值的数据类型
Feb 26 Python
python实现录音功能(可随时停止录音)
Oct 26 Python
Python高并发和多线程有什么关系
Nov 14 Python
Python中title()方法的使用简介
May 20 #Python
python中enumerate函数用法实例分析
May 20 #Python
python网络编程之数据传输UDP实例分析
May 20 #Python
在Python中使用swapCase()方法转换大小写的教程
May 20 #Python
python计算时间差的方法
May 20 #Python
python中sys.argv参数用法实例分析
May 20 #Python
python文件操作之目录遍历实例分析
May 20 #Python
You might like
php实现将数组转换为XML的方法
2015/03/09 PHP
详解PHP中的Traits
2015/07/29 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
PyQt5每天必学之事件与信号
2018/04/20 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
八年级美术教学反思
2014/02/02 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
经验交流材料格式
2014/12/30 职场文书
党支部书记岗位职责
2015/02/15 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
Golang 并发下的问题定位及解决方案
2022/03/16 Golang
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏
Elasticsearch 索引操作和增删改查
2022/04/19 Python
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技