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 可爱的大小写
Sep 06 Python
Python 学习笔记
Dec 27 Python
跟老齐学Python之不要红头文件(1)
Sep 28 Python
Python中使用装饰器时需要注意的一些问题
May 11 Python
matplotlib绘图实例演示标记路径
Jan 23 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
分析经典Python开发工程师面试题
Apr 08 Python
Pycharm保存不能自动同步到远程服务器的解决方法
Jun 27 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
Apr 22 Python
python获取天气接口给指定微信好友发天气预报
Dec 28 Python
Python3.9.1中使用match方法详解
Feb 08 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
国产PHP开发框架myqee新手快速入门教程
2014/07/14 PHP
ThinkPHP模板中数组循环实例
2014/10/30 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
微信小程序之批量上传并压缩图片的实例代码
2018/07/05 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
python标准日志模块logging的使用方法
2013/11/01 Python
Python中的进程分支fork和exec详解
2015/04/11 Python
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
python 网络编程详解及简单实例
2017/04/25 Python
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
python3中pip3安装出错,找不到SSL的解决方式
2019/12/12 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
python FTP编程基础入门
2021/02/27 Python
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
钳工实习自我鉴定
2013/09/19 职场文书
单位成立周年感言
2014/01/26 职场文书
致接力运动员广播稿
2014/02/17 职场文书
课外活动实习计划
2015/01/19 职场文书
学生检讨书
2015/01/27 职场文书
社区义诊通知
2015/04/24 职场文书
小学运动会加油词
2015/07/18 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
什么是动态刷新率DRR? Windows11动态刷新率功能介绍
2021/11/21 数码科技
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android