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 相关文章推荐
安装dbus-python的简要教程
May 05 Python
python 基础教程之Map使用方法
Jan 17 Python
python获取程序执行文件路径的方法(推荐)
Apr 26 Python
python skimage 连通性区域检测方法
Jun 21 Python
解决pycharm 误删掉项目文件的处理方法
Oct 22 Python
浅谈Pycharm中的Python Console与Terminal
Jan 17 Python
Python PIL图片添加字体的例子
Aug 22 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
May 03 Python
keras中的卷积层&池化层的用法
May 22 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
May 25 Python
python用tkinter实现一个gui的翻译工具
Oct 26 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 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
什么是MVC,好东西啊
2007/05/03 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
JS数组的遍历方式for循环与for...in
2014/07/31 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
Python的设计模式编程入门指南
2015/04/02 Python
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
Python编程中的异常处理教程
2015/08/21 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
python利用opencv实现SIFT特征提取与匹配
2020/03/05 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
护理专科毕业生自荐书范文
2014/02/19 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
2015年销售助理工作总结
2015/05/11 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
详解如何修改nginx的默认端口
2021/03/31 Servers