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快速排序代码实例
Nov 21 Python
Python Sleep休眠函数使用简单实例
Feb 02 Python
python Django模板的使用方法
Jan 14 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
python单例模式实例解析
Aug 28 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
使用python的pandas为你的股票绘制趋势图
Jun 26 Python
Python Lambda函数使用总结详解
Dec 11 Python
python数据分析:关键字提取方式
Feb 24 Python
Visual Studio Code搭建django项目的方法步骤
Sep 17 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
输出控制类
2006/10/09 PHP
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
PHP5.3新特性小结
2016/02/14 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
2016/12/02 PHP
php使用crypt()函数进行加密
2017/06/08 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
PHP code 验证码生成类定义和简单使用示例
2020/05/27 PHP
JS控制表格隔行变色
2006/06/26 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
2013/04/20 Javascript
浏览器页面区域大小的js获取方法
2013/09/21 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
Js面试算法详解
2018/04/08 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
浅谈如何通过node.js对数据进行MD5加密
2018/05/16 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
2020/04/25 Javascript
Python 正则表达式入门(初级篇)
2016/12/07 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
python3代码中实现加法重载的实例
2020/12/03 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
浅谈html5 响应式布局
2014/12/24 HTML / CSS
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
机电专业个人求职信范文
2013/12/30 职场文书
企业项目策划书
2014/01/11 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server
CentOS安装Nginx并部署vue
2022/04/12 Servers