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 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
Python模块包中__init__.py文件功能分析
Jun 14 Python
python使用str & repr转换字符串
Oct 13 Python
利用Python破解斗地主残局详解
Jun 30 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
Dec 31 Python
PyQt使用QPropertyAnimation开发简单动画
Apr 02 Python
学会python自动收发邮件 代替你问候女友
May 20 Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 Python
python中delattr删除对象方法的代码分析
Dec 15 Python
python开发的自动化运维工具ansible详解
Aug 07 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生成短网址示例
2014/05/05 PHP
使用laravel指定日志文件记录任意日志
2019/10/17 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
Python中的面向对象编程详解(上)
2015/04/13 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
python素数筛选法浅析
2018/03/19 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
python人民币小写转大写辅助工具
2018/06/20 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
Python进程池Pool应用实例分析
2019/11/27 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
餐饮采购员岗位职责
2014/03/15 职场文书
联欢晚会主持词
2014/03/25 职场文书
文明生主要事迹
2014/05/25 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
大学生实习介绍信
2015/05/05 职场文书
预备党员考察意见范文
2015/06/01 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书