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的Django框架中的静态资源管理器django-pipeline
Apr 25 Python
在Python中处理字符串之isdecimal()方法的使用
May 20 Python
python selenium自动上传有赞单号的操作方法
Jul 05 Python
python之消除前缀重命名的方法
Oct 21 Python
详解从Django Rest Framework响应中删除空字段
Jan 11 Python
Python 实现文件打包、上传与校验的方法
Feb 13 Python
pycharm设置鼠标悬停查看方法设置
Jul 29 Python
python通过opencv实现图片裁剪原理解析
Jan 19 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
如何将json数据转换为python数据
Sep 04 Python
Python实现手势识别
Oct 21 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
中国站长站 For Dede4.0 采集规则
2007/05/27 PHP
关于页面优化和伪静态
2009/10/11 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
原生js开发的日历插件
2017/02/04 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
2017/08/08 jQuery
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
iview table render集成switch开关的实例
2018/03/14 Javascript
详解webpack-dev-server的简单使用
2018/04/02 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
快速了解Python中的装饰器
2018/01/11 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
Python如何读取文件中图片格式
2020/01/13 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
简单叙述一下MYSQL的优化
2016/05/09 面试题
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
申请任职学生会干部自荐书范文
2014/02/13 职场文书
会务接待方案
2014/02/27 职场文书
法人代表证明书格式
2014/10/01 职场文书
评先进个人材料
2014/12/29 职场文书
工程合作意向书范本
2015/05/09 职场文书
名人传读书笔记
2015/06/26 职场文书
校园安全主题班会
2015/08/12 职场文书
创业计划书之废品回收
2019/09/26 职场文书
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android