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操作MySQL数据库具体方法
Oct 28 Python
python根据经纬度计算距离示例
Feb 16 Python
Python实现远程调用MetaSploit的方法
Aug 22 Python
python实现的正则表达式功能入门教程【经典】
Jun 05 Python
selenium跳过webdriver检测并模拟登录淘宝
Jun 12 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
python opencv进行图像拼接
Mar 27 Python
python的Jenkins接口调用方式
May 12 Python
Python selenium爬取微信公众号文章代码详解
Aug 12 Python
python海龟绘图之画国旗实例代码
Nov 11 Python
python实现的人脸识别打卡系统
May 08 Python
使用pandas模块实现数据的标准化操作
May 14 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&MYSQL服务器配置说明
2006/10/09 PHP
深入PHP内存相关的功能特性详解
2013/06/08 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
从零开始学习jQuery (二) 万能的选择器
2010/10/01 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
bootstrap table小案例
2016/10/21 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
跟老齐学Python之正规地说一句话
2014/09/28 Python
Python实现的数据结构与算法之双端队列详解
2015/04/22 Python
使用Python写个小监控
2016/01/27 Python
Python模拟用户登录验证
2017/09/11 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
python中map的基本用法示例
2018/09/10 Python
python实现简易动态时钟
2018/11/19 Python
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
战友聚会邀请函
2014/01/18 职场文书
一月红领巾广播稿
2014/02/11 职场文书
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
市级三好学生评语
2014/12/29 职场文书
大班下学期个人总结
2015/02/13 职场文书
Python打包exe时各种异常处理方案总结
2021/05/18 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle