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 相关文章推荐
python类参数self使用示例
Feb 17 Python
Python使用MySQLdb for Python操作数据库教程
Oct 11 Python
在Python的Django框架中更新数据库数据的方法
Jul 17 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
Jan 15 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
Oct 09 Python
PyQt5根据控件Id获取控件对象的方法
Jun 25 Python
python循环嵌套的多种使用方法解析
Nov 29 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
Mar 06 Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 Python
Python中无限循环需要什么条件
May 27 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 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 编写安全的代码时容易犯的错误小结
2010/05/20 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
JavaScript的类型简单说明
2010/09/03 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
详解javascript中的babel到底是什么
2018/06/21 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
Python构建图像分类识别器的方法
2019/01/12 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
2019/10/17 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
原生 JS+CSS+HTML 实现时序图的方法
2019/07/31 HTML / CSS
支教自我鉴定
2014/01/18 职场文书
学生会干部自荐信
2014/02/04 职场文书
四风存在的原因分析
2014/02/11 职场文书
承诺书格式
2014/06/03 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android