原用于下载ftp中文路径图片封装代码

  1. 支持指定用户密码和端口

    ftp://ftpuser:ftppasswd@192.168.2.157:21/test.png
  2. 支持中文
    ftp://192.168.2.157/测试1/test.png

思路逻辑:

  1. ftp url分析是否有用户验证和端口指定
  2. 使用ftp.retrbinary下载文件,StringIO.StringIO()作缓存

直接上代码

 1 # coding:utf-8
 2 import sys
 3 import urlparse
 4 import ftplib
 5 import traceback
 6 import StringIO
 7
 8 # used to down ftp file with auth and chinese character
 9 def ftpdown(url, timeout=3):
10     lasterr = ''
11     for i in range(3):
12         urlps = urlparse.urlparse(url)
13         if '@' not in urlps.netloc:
14             user = ''
15             passwd = ''
16             host = urlps.netloc
17             port = 21
18         else:
19             urlhead = urlps.netloc.split('@')
20             if len(urlhead) != 2:
21                 lasterr = 'url fromat err'
22                 continue
23             else:
24                 user, passwd = urlhead[0].split(':')
25                 if ':' not in urlhead[1]:
26                     host = urlhead[1]
27                     port = 21
28                 else:
29                     host, port = urlhead[1].split(':')
30
31         try:
32             ftp = ftplib.FTP()
33             ftp.connect(host=host, port=port, timeout=timeout)
34             ftp.login(user=user, passwd=passwd)
35         except Exception:
36             print(traceback.format_exc())
37             continue
38         try:
39             buf = StringIO.StringIO()
40             ftp.retrbinary('RETR ' + urlps.path, buf.write)
41             ftp.close()
42             return buf.getvalue()
43         except Exception:
44             lasterr = traceback.format_exc()
45             continue
46     print('exception occurs when ftp get url[%s], err[%s]' % (url, lasterr))
47     return None

参考文档:https://www.cnblogs.com/kaituorensheng/p/4480512.html

转载于:https://www.cnblogs.com/elephanyu/p/8889428.html

python ftplib下载文件封装相关推荐

  1. python下载方法-python实现下载文件的三种方法_python

    本篇文章主要介绍了python实现下载文件的三种方法,最常用的方法就是通过Http利用urllib或者urllib2模块还有requests,有兴趣的可以了解一下. Python开发中时长遇到要下载文 ...

  2. python下载的文件放在哪里的-python实现下载文件的三种方法

    Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法 ...

  3. python 下载文件-python实现下载文件的三种方法_python

    本篇文章主要介绍了python实现下载文件的三种方法,最常用的方法就是通过Http利用urllib或者urllib2模块还有requests,有兴趣的可以了解一下. Python开发中时长遇到要下载文 ...

  4. python写http文件下载器_http分片请求-python分片下载文件

    源文件 http://theday.guohongfu.top/letter.txt内容为abcdefghijklmnopqrstuvwxyz 获取第20字节及以后的内容import requests ...

  5. python爬虫下载文件-【Py大法系列--03】Python如何自动下载文件

    问题描述 Python自动下载文件,通用文件,包括但不限于压缩文件.图片等. 解决方法 一般情况下,Python下载文件的方式有以下几种: 利用urllib.urllib2,即Python爬虫用的最多 ...

  6. python实现http下载文件-Python HTTP下载文件并显示下载进度条功能的实现

    下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条. 其中利用request模块下载文件可以直接下载,不需要使用open方法,例如: im ...

  7. python 自动下载文件_【Py大法系列--03】Python如何自动下载文件

    问题描述 Python自动下载文件,通用文件,包括但不限于压缩文件.图片等. 解决方法 一般情况下,Python下载文件的方式有以下几种: 利用urllib.urllib2,即Python爬虫用的最多 ...

  8. Python requests 下载文件

    0x00 前言 记录一下Python requests 下载文件的相关内容,每次都是搜别人的不如自己做一做笔记. 0x01 可调用方法 先存一个比较简单地,等以后有用到的话,再进行扩充 def dow ...

  9. python 网站文件下载-python实现下载文件的三种方法

    Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法 ...

最新文章

  1. 需求实在太旺盛,三星电子考虑扩大在华芯片产能
  2. java mysql防重复提交_防止数据重复提交的6种方法(超简单)!
  3. Android 第三课 Activity的生命周期
  4. python整数因子_Python:通过非整数因子下采样2D numpy数组
  5. uniapp 输入框防抖节流_拉动一下控制台大小,后台请求数量爆炸,竟是没做好防抖与节流...
  6. 【损失函数】一文弄懂各种loss function
  7. c语言打印long double,C/C++printf输出int、long、longlong、double、longdouble、string等
  8. 产品发布会快闪创意动画PPT模板
  9. (附源码)springboot音乐播放小程序 毕业设计 031306
  10. HTML网页入门练习——导航栏布局设计
  11. 情人节礼物------用她的照片和我们的聊天记录生成词云~
  12. Java 实现打印超市小票
  13. office365中word打开时显示“word无法启动转换器RECOVR32.CNV”的解决办法
  14. NB-IoT窖井井盖解决方案
  15. html鼠标滚轮监听,js鼠标滑轮滚动监听触发事件
  16. 2018币圈热搜大事件汇总-千氪
  17. OpenStack 虚拟机冷/热迁移功能实践与流程分析
  18. 美加州将遭太平洋风暴侵袭 警方要求部分民众撤离
  19. OpenLayers使用
  20. java I/O流:字节流和字符流(概要及其方法)

热门文章

  1. SQL Server索引总结二
  2. php接收base64图片并保存
  3. dijkstra 最短路算法
  4. [erlang] mnesia
  5. 使用HISTCONTROL强制history忽略某条特定命令
  6. mysql复制学习二 安装及首次复制配置
  7. DataNode之DirectoryScanner分析
  8. MySQL多实例配置
  9. (85)FPGA约束有哪些-面试必问(九)(第17天)
  10. (34)FPGA面试技能提升篇(高速SERDES)