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

 更新时间:2020年12月05日 09:58:04   作者:小黑仔学It  
这篇文章主要介绍了python从ftp获取文件并下载到本地,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下

最近有需求是,需要把对方提供的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库Cerberus数据验证如何保证系统安全性正确性实例分析

    Python库Cerberus数据验证如何保证系统安全性正确性实例分析

    本文带大家探索 Cerberus 库,看看它是如何帮助我们在开发过程中保障数据的安全性和完整性的,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • keras 权重保存和权重载入方式

    keras 权重保存和权重载入方式

    这篇文章主要介绍了keras 权重保存和权重载入方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 深入解析Python中占位符%的使用方法

    深入解析Python中占位符%的使用方法

    在Python中,%占位符是一种强大的工具,用于格式化字符串,本文将深入解析Python中占位符的使用方法,包括字符串格式化、数字格式化、日期格式化等多个方面,需要的可以参考下
    2023-12-12
  • python多核处理器算力浪费问题解决

    python多核处理器算力浪费问题解决

    这篇文章主要为大家介绍了python多核处理器算力浪费现象的处理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 简单讲解Python中的数字类型及基本的数学计算

    简单讲解Python中的数字类型及基本的数学计算

    这篇文章主要介绍了Python中的数字类型及基本的数学计算,与其他语言一样,除法相对复杂些,不过本文并未就此深入,需要的朋友可以参考下
    2016-03-03
  • python使用PyFetion来发送短信的例子

    python使用PyFetion来发送短信的例子

    这篇文章主要介绍了python使用PyFetion来发送短信的例子,需要的朋友可以参考下
    2014-04-04
  • Python读取txt某几列绘图的方法

    Python读取txt某几列绘图的方法

    今天小编就为大家分享一篇Python读取txt某几列绘图的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • python切割图片的实现示例

    python切割图片的实现示例

    本文主要介绍了python切割图片的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • scrapy-splash简单使用详解

    scrapy-splash简单使用详解

    这篇文章主要介绍了scrapy-splash简单使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • pandas的唯一值、值计数以及成员资格的示例

    pandas的唯一值、值计数以及成员资格的示例

    今天小编就为大家分享一篇pandas的唯一值、值计数以及成员资格的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论