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中函数的用法实例教程
Sep 08 Python
python基于queue和threading实现多线程下载实例
Oct 08 Python
python中global与nonlocal比较
Nov 21 Python
归纳整理Python中的控制流语句的知识点
Apr 14 Python
python中sleep函数用法实例分析
Apr 29 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
Dec 24 Python
Python while循环使用else语句代码实例
Feb 07 Python
python求最大公约数和最小公倍数的简单方法
Feb 13 Python
使用 Python ssh 远程登陆服务器的最佳方案
Mar 06 Python
Python虚拟环境的创建和包下载过程分析
Jun 19 Python
基于python实现操作redis及消息队列
Aug 27 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 计划任务 检测用户连接状态
2012/03/29 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
js停止输出代码
2008/07/20 Javascript
javascript 计算两个整数的百分比值
2009/12/26 Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
js实现获取焦点后光标在字符串后
2014/09/17 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
JS抛物线动画实例制作
2018/02/24 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
bootstrap table插件动态加载表头
2019/07/19 Javascript
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
Python中的生成器和yield详细介绍
2015/01/09 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
python交互模式基础知识点学习
2020/06/18 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
营业员演讲稿
2013/12/30 职场文书
物流仓储计划书
2014/01/10 职场文书
计算机个人求职信范例
2014/01/24 职场文书
理想演讲稿范文
2014/05/21 职场文书
伦敦奥运会口号
2014/06/13 职场文书
加班费申请报告
2015/05/15 职场文书
教学工作总结范文5篇
2019/08/19 职场文书