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入门及进阶笔记 Python 内置函数小结
Aug 09 Python
python 实时遍历日志文件
Apr 12 Python
Python中的字符串替换操作示例
Jun 27 Python
Python实现的弹球小游戏示例
Aug 01 Python
python实现二叉树的遍历
Dec 11 Python
通过python顺序修改文件名字的方法
Jul 11 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
Jul 18 Python
Python django搭建layui提交表单,表格,图标的实例
Nov 18 Python
Python实现线性判别分析(LDA)的MATLAB方式
Dec 09 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 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
用Socket发送电子邮件
2006/10/09 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
PHP排序算法类实例
2015/06/17 PHP
PHP6新特性分析
2016/03/03 PHP
php版微信返回用户text输入的方法
2016/11/14 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
javascript ajax的5种状态介绍
2014/08/18 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
2016/12/23 Javascript
three.js实现围绕某物体旋转
2017/01/25 Javascript
NodeJs通过async/await处理异步的方法
2017/10/09 NodeJs
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
2018/09/07 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
2019/04/04 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
vue 判断元素内容是否超过宽度的方式
2020/07/29 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
python多线程并发及测试框架案例
2019/10/15 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
2014年高三毕业生自我评价
2014/01/11 职场文书
40岁生日感言
2014/02/15 职场文书
法定代表人身份证明书
2014/09/10 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书
召开会议通知范文
2015/04/15 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
初一数学教学反思
2016/02/17 职场文书
python开发的自动化运维工具ansible详解
2021/08/07 Python
MySQL笔记 —SQL运算符
2022/01/18 MySQL