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中使用OpenCV进行人脸检测的例子
Apr 18 Python
Python实现学生成绩管理系统
Apr 05 Python
python简单商城购物车实例代码
Mar 15 Python
Python实现计算对象的内存大小示例
Jul 10 Python
Django url,从一个页面调到另个页面的方法
Aug 21 Python
解决使用python print打印函数返回值多一个None的问题
Apr 09 Python
Virtualenv 搭建 Py项目运行环境的教程详解
Jun 22 Python
python pymysql库的常用操作
Oct 16 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
python 定义函数 返回值只取其中一个的实现
May 21 Python
教你使用Python pypinyin库实现汉字转拼音
May 27 Python
python开发的自动化运维工具ansible详解
Aug 07 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流量统计功能的实现代码
2012/09/29 PHP
探讨:如何编写PHP扩展
2013/06/13 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
jquery 学习之二 属性相关
2010/11/23 Javascript
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
Extjs 点击复选框在表格中增加相关信息行
2016/07/12 Javascript
angular中的cookie读写方法
2017/08/02 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
js设置默认时间跨度过程详解
2019/07/17 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
python 快速排序代码
2009/11/23 Python
Python中文竖排显示的方法
2015/07/28 Python
利用Python命令行传递实例化对象的方法
2016/11/02 Python
python 调用HBase的简单实例
2016/12/18 Python
Unicode和Python的中文处理
2017/03/19 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
Python中请不要再用re.compile了
2019/06/30 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
python并发编程多进程 互斥锁原理解析
2019/08/20 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
给老婆大人的检讨书
2014/02/24 职场文书
物业接待员岗位职责
2015/04/15 职场文书
婚育证明样本
2015/06/16 职场文书
人代会简报
2015/07/21 职场文书
小学生六年级作文之关于感恩
2019/08/16 职场文书