python从ftp获取文件并下载到本地


Posted in Python onDecember 05, 2020

最近有需求是,需要把对方提供的ftp地址上的图片获取到本地服务器,原先计划想着是用shell 操作,因为shell 本身也支持ftp的命令 在通过for 循环也能达到需求。但是后来想着 还是拿python 操作;于是在网上进行百度;无一例外 还是那么失望 无法直接抄来就用。于是在一个代码上进行修改。还是有点心东西学习到了;具体操作代码如下 只要修改ftp 账号密码 已经对应目录即可使用

在这需要注意一点的是os.path.join 的用法需要注意

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
FTP常用操作
"""
from ftplib import FTP
import os
class FTP_OP(object):
  def __init__(self, host, username, password, port):
    """
    初始化ftp
  :param host: ftp主机ip
  :param username: ftp用户名
  :param password: ftp密码
  :param port: ftp端口 (默认21)
  """
    self.host = host
    self.username = username
    self.password = password
    self.port = port
  def ftp_connect(self):
    """
    连接ftp
    :return:
    """
    ftp = FTP()
    ftp.set_debuglevel(1) # 不开启调试模式
    ftp.connect(host=self.host, port=self.port) # 连接ftp
    ftp.login(self.username, self.password) # 登录ftp
    ftp.set_pasv(False)##ftp有主动 被动模式 需要调整 
    return ftp
  def download_file(self, ftp_file_path, dst_file_path):
    """
    从ftp下载文件到本地
    :param ftp_file_path: ftp下载文件路径
    :param dst_file_path: 本地存放路径
    :return:
    """
    buffer_size = 102400 #默认是8192
    ftp = self.ftp_connect()
    print(ftp.getwelcome() ) #显示登录ftp信息
    file_list = ftp.nlst(ftp_file_path)
    for file_name in file_list:
      print("file_name"+file_name)
      ftp_file = os.path.join(ftp_file_path, file_name)
      print("ftp_file:"+ftp_file)
      #write_file = os.path.join(dst_file_path, file_name)
      write_file = dst_file_path+file_name ##在这里如果使用os.path.join 进行拼接的话 会丢失dst_file_path路径,与上面的拼接路径不一样
      print("write_file"+write_file)
      if file_name.find('.png')>-1 and not os.path.exists(write_file):
        print("file_name:"+file_name)
        #ftp_file = os.path.join(ftp_file_path, file_name)
        #write_file = os.path.join(dst_file_path, file_name)
        with open(write_file, "wb") as f:
          ftp.retrbinary('RETR %s' % ftp_file, f.write, buffer_size)
          #f.close()
    ftp.quit()

if __name__ == '__main__':
  host = "192.168.110.**"
  username = "****"
  password = "****"
  port = 21
  ftp_file_path = "/erp-mall/" #FTP目录
  dst_file_path = "/root/11" #本地目录
  ftp = FTP_OP(host=host, username=username, password=password, port=port)
  ftp.download_file(ftp_file_path=ftp_file_path, dst_file_path=dst_file_path)

以上就是python从ftp获取文件并下载到本地的详细内容,更多关于python ftp下载文件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
快速解决PyCharm无法引用matplotlib的问题
May 24 Python
Python 数值区间处理_对interval 库的快速入门详解
Nov 16 Python
python DataFrame 取差集实例
Jan 30 Python
numpy下的flatten()函数用法详解
May 27 Python
python函数修饰符@的使用方法解析
Sep 02 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
Sep 25 Python
python实现超市商品销售管理系统
Nov 22 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
Dec 02 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
Pycharm调试程序技巧小结
Aug 08 Python
python 爬取英雄联盟皮肤并下载的示例
Dec 04 Python
python实现马丁策略的实例详解
Jan 15 Python
python基于socket模拟实现ssh远程执行命令
Dec 05 #Python
Python实现PS滤镜中的USM锐化效果
Dec 04 #Python
python 模拟登陆github的示例
Dec 04 #Python
python中round函数保留两位小数的方法
Dec 04 #Python
python中pow函数用法及功能说明
Dec 04 #Python
python对输出的奇数偶数排序实例代码
Dec 04 #Python
python中entry用法讲解
Dec 04 #Python
You might like
PHP分页显示制作详细讲解
2006/10/09 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
php网站判断用户是否是手机访问的方法
2013/11/01 PHP
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
详细分析单线程JS执行问题
2017/11/22 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
小程序分享模块超级详解(推荐)
2019/04/10 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
在Python的while循环中使用else以及循环嵌套的用法
2015/10/14 Python
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
解决PyCharm控制台输出乱码的问题
2019/01/16 Python
python实现图片压缩代码实例
2019/08/12 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
python实现堆排序的实例讲解
2020/02/21 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
建筑施工实习自我鉴定
2013/09/19 职场文书
销售行业个人求职自荐信
2013/09/25 职场文书
机械专业应届生求职信
2013/12/12 职场文书
善意的谎言事例
2014/02/15 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书