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引用模块和查找模块路径
Mar 17 Python
Python基于回溯法子集树模板解决数字组合问题实例
Sep 02 Python
python pandas 对时间序列文件处理的实例
Jun 22 Python
Python 打印中文字符的三种方法
Aug 14 Python
django-filter和普通查询的例子
Aug 12 Python
python Web flask 视图内容和模板实现代码
Aug 23 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
python实现人脸签到系统
Apr 13 Python
解决paramiko执行命令超时的问题
Apr 16 Python
浅谈Python 函数式编程
Jun 20 Python
Python+OpenCV图像处理——图像二值化的实现
Oct 24 Python
分享几种python 变量合并方法
Mar 20 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
PHP5 面向对象(学习记录)
2009/12/02 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
JS实现电商放大镜效果
2017/08/24 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
[47:03]Ti4第二日主赛事败者组 LGD vs iG 2
2014/07/21 DOTA
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python运算符重载用法实例分析
2015/06/01 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
python在非root权限下的安装方法
2018/01/23 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
Python中的枚举类型示例介绍
2019/01/09 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
C#基础面试题
2016/10/17 面试题
Java如何支持I18N?
2016/10/31 面试题
服装采购员岗位职责
2014/03/15 职场文书
学习型党组织心得体会
2014/09/12 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
单位病假条范文
2015/08/17 职场文书
Nginx的基本概念和原理
2022/03/21 Servers
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js