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程序的执行效率的教程
Apr 02 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
Python DataFrame设置/更改列表字段/元素类型的方法
Jun 09 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
python输出决策树图形的例子
Aug 09 Python
PyTorch之图像和Tensor填充的实例
Aug 18 Python
python elasticsearch环境搭建详解
Sep 02 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
Apr 10 Python
基于python实现地址和经纬度转换
May 19 Python
python GUI模拟实现计算器
Jun 22 Python
windows支持哪个版本的python
Jul 03 Python
python爬虫破解字体加密案例详解
Mar 02 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中mkdir()函数的权限问题分析
2016/09/24 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
2009/05/21 Javascript
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
微信小程序 textarea 组件详解及简单实例
2017/01/10 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
深入理解JavaScript和TypeScript中的class
2018/04/22 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
详解Vue路由自动注入实践
2019/04/17 Javascript
vue实现鼠标经过动画
2019/10/16 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
Python3使用正则表达式爬取内涵段子示例
2018/04/22 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
文员自我评价怎么写
2013/09/19 职场文书
会计自我鉴定范文
2013/10/06 职场文书
送餐员岗位职责范本
2014/02/21 职场文书
房产继承公证书
2014/04/09 职场文书
管理工程专业求职信
2014/08/10 职场文书
免职证明样本
2014/10/23 职场文书
2014年个人思想工作总结
2014/11/27 职场文书
论文答谢词
2015/01/20 职场文书
Python基础之元编程知识总结
2021/05/23 Python
Oracle 多表查询基本语法实例
2022/04/18 Oracle
讲解Python实例练习逆序输出字符串
2022/05/06 Python