python ftplib下载文件封装

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

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

    ftp://ftpuser:[email protected]:21/test.png
  2. 支持中文
    ftp://192.168.2.157/测试1/test.png

直接上代码

 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/elephanyu/p/8889428.html

时间: 2024-11-09 05:45:10

python ftplib下载文件封装的相关文章

Python HTTP下载文件并显示下载进度条

下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条. 其中利用request模块下载文件可以直接下载,不需要使用open方法,例如: import urllib import requests.packages.urllib3 requests.packages.urllib3.disable_warnings() url = "https://raw.githubusercontent.com/racaljk/hosts/maste

python多线程下载文件

从文件中读取图片url和名称,将url中的文件下载下来.文件中每一行包含一个url和文件名,用制表符隔开. 1.使用requests请求url并下载文件 def download(img_url, img_name): with closing(requests.get(img_url, stream=True)) as r: with open(os.path.join(out_dir, img_name), 'wb') as f: for data in r.iter_content(102

Python 给下载文件显示进度条和下载时间

其实实现它方法很简单,这里我写了个进度条的模块,其中还附带上了运行时间也就是下载时间了. 该模块调用了三个库:1.os 2.requests 3.time 话不多说,先上代码!!!. # 进度条模块 def progressbar(url,path): if not os.path.exists(path): # 看是否有该文件夹,没有则创建文件夹 os.mkdir(path) start = time.time() #下载开始时间 response = requests.get(url, st

python 批量下载文件

file.txt 的内容为: http://183.xxx.xxx.54:188/my/qqq.ico::qq.exe::0::http://183.xxx.xxx.54:186/my/ddnf.ico::dnf.exe::0:: 1 import re 2 import os.path 3 import urllib.request 4 import socket 5 6 #Python读写文件 7 #使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/fina

Python FTP 下载文件 简单示例

简单的FTP下载 ,不加任何异常判断. <span style="font-size:14px;">import os from ftplib import FTP ftp_addr = '10.10.0.1' f=FTP(ftp_addr) f.login('anonymous') f.cwd("apk_download/") remote_file = '20141223140651.apk' f.retrbinary("RETR %s&q

Windows下将Python源代码.py文件封装成exe可执行文件方法

安装pyinstaller cmd中使用pip安装 pip install pyinstaller 同时会自动安装pywin32(pip真慢50M这里就走20KB),可以进行切换为国内源进行提速. 就可以直接在python目录下的scripts目录下看到相关文件生成(pip安装的好处) 此时直接进入cmd中输入 pyinstaller 进行验证安装是否成功,成功如图 进入脚本所在的目录,执行如下命令. Pyinstaller xxxxx.py 完成后可在脚本目录下看到dist和build目录生成

python批量下载文件

#!/usr/bin/python # _*_ coding: utf-8 _*_ ''' Created on 2018年8月22日 ''' import urllib import urllib2 import re req = urllib2.Request('http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/') # req = urllib2.Request('http://www.cvpapers.com/cvpr2014.html')

python+selenium下载文件——Chrome

from selenium import webdriver import time options = webdriver.ChromeOptions() prefs = { 'profile.default_content_settings.popups':0 ,'download.default_directory':'C:\\Users\\del\\Desktop\\1'} #设置为0表示禁止弹出窗口, #设置文件下载路径 options.add_experimental_option(

python下载文件的三种方法

Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法requests. 下面来看看三种方法是如何来下载zip文件的:方法一: import urllib import urllib2 import requests print "downloading with urllib" url = 'http://***/test/demo.zip