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 相关文章推荐
wxpython 最小化到托盘与欢迎图片的实现方法
Jun 09 Python
浅析python 中__name__ = '__main__' 的作用
Jul 05 Python
Python实现的简单文件传输服务器和客户端
Apr 08 Python
Python中生成器和yield语句的用法详解
Apr 17 Python
Python的Django框架中设置日期和字段可选的方法
Jul 17 Python
详解python里的命名规范
Jul 16 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
Python Django 封装分页成通用的模块详解
Aug 21 Python
python 多进程并行编程 ProcessPoolExecutor的实现
Oct 11 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
如何使用 Python 读取文件和照片的创建日期
Sep 05 Python
MATLAB 如何求取离散点的曲率最大值
Apr 16 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+javascript的日历控件
2009/11/19 PHP
php导出中文内容excel文件类实例
2015/07/06 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
2012/02/23 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
2016/05/12 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
JS动画实现回调地狱promise的实例代码详解
2018/11/08 Javascript
JS代码检查工具ESLint介绍与使用方法
2020/02/04 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
vue 中使用print.js导出pdf操作
2020/11/13 Javascript
python实现折半查找和归并排序算法
2017/04/14 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
在pycharm中显示python画的图方法
2019/08/31 Python
关于Python 常用获取元素 Driver 总结
2019/11/24 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
包装类的功能、种类、常用方法
2012/01/27 面试题
创业计划书怎样才能打动风投
2014/01/01 职场文书
捐赠仪式主持词
2014/03/19 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
2014年党支部工作总结
2014/11/13 职场文书
立案决定书范文
2015/06/24 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
php将xml转化对象的实例详解
2021/11/17 PHP