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实现批量读取word中表格信息的方法
Jul 30 Python
火车票抢票python代码公开揭秘!
Mar 08 Python
python构建深度神经网络(续)
Mar 10 Python
Python使用googletrans报错的解决方法
Sep 25 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
Nov 30 Python
Python实现定时执行任务的三种方式简单示例
Mar 30 Python
解决Python设置函数调用超时,进程卡住的问题
Aug 08 Python
python按行读取文件并找出其中指定字符串
Aug 08 Python
详解Python并发编程之从性能角度来初探并发编程
Aug 23 Python
在Mac中PyCharm配置python Anaconda环境过程图解
Mar 11 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 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
配置支持SSI
2006/11/25 PHP
PHP访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
信息滚动效果的实例讲解
2017/09/18 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
一文了解Vue中的nextTick
2019/05/06 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
简单了解Django项目应用创建过程
2020/07/06 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
高一历史教学反思
2014/01/13 职场文书
项目采购员岗位职责
2014/04/15 职场文书
2014年科技工作总结
2014/11/26 职场文书
办公室文员岗位职责
2015/02/04 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
2015年药店工作总结
2015/04/20 职场文书
小学教代会开幕词
2016/03/04 职场文书
Mysql systemctl start mysqld报错的问题解决
2021/06/03 MySQL