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 相关文章推荐
20招让你的Python飞起来!
Sep 27 Python
Python实现的矩阵类实例
Aug 22 Python
Python基于回溯法子集树模板解决取物搭配问题实例
Sep 02 Python
python实现按长宽比缩放图片
Jun 07 Python
对python程序内存泄漏调试的记录
Jun 11 Python
python实现简易内存监控
Jun 21 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
python3实现猜数字游戏
Dec 07 Python
详解python中*号的用法
Oct 21 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
Oct 30 Python
flask的orm框架SQLAlchemy查询实现解析
Dec 12 Python
Python获取、格式化当前时间日期的方法
Feb 10 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 socket通信(tcp/udp)实例分析
2016/02/14 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
PHP使用PDO调用mssql存储过程的方法示例
2017/10/07 PHP
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
Python中MySQL数据迁移到MongoDB脚本的方法
2016/04/28 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
Python函数中的可变长参数详解
2019/09/12 Python
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
保送生自荐信范文
2013/10/06 职场文书
餐厅总经理岗位职责
2013/12/31 职场文书
项目考察欢迎辞
2014/01/17 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
民生工程实施方案
2014/03/22 职场文书
中秋节主持词
2014/04/02 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
2015元旦标语横幅
2014/12/09 职场文书
毕业生评语大全
2015/01/04 职场文书
学生检讨书怎么写
2015/05/07 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
礼仪培训心得体会
2016/01/22 职场文书