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 mysqldb连接数据库
Mar 16 Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
NumPy 数组使用大全
Apr 25 Python
基于python+selenium的二次封装的实现
Jan 06 Python
Pyecharts绘制全球流向图的示例代码
Jan 08 Python
Python requests获取网页常用方法解析
Feb 20 Python
python实现udp聊天窗口
Mar 31 Python
Python代码中如何读取键盘录入的值
May 27 Python
Python Dict找出value大于某值或key大于某值的所有项方式
Jun 05 Python
python语言是免费还是收费的?
Jun 15 Python
python中numpy数组与list相互转换实例方法
Jan 29 Python
Python基础详解之描述符
Apr 28 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实现的json类实例
2015/07/28 PHP
PHP获取客户端及服务器端IP的封装类
2016/07/21 PHP
跟随鼠标旋转的文字
2006/11/30 Javascript
ASP Json Parser修正版
2009/12/06 Javascript
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
JavaScript错误处理
2015/02/03 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
javascript cookie的简单应用
2016/02/24 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
2016/05/13 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
javaScript实现一个队列的方法
2020/07/14 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
Python使用装饰器进行django开发实例代码
2018/02/06 Python
python解决字符串倒序输出的问题
2018/06/25 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
公司总经理助理岗位职责
2014/07/09 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
货款欠条范本
2015/07/03 职场文书
python for循环赋值问题
2021/06/03 Python
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python
Hive日期格式转换方法总结
2022/06/25 数据库