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检测远程服务器tcp端口的方法
Mar 14 Python
Python 基础知识之字符串处理
Jan 06 Python
python自动12306抢票软件实现代码
Feb 24 Python
Python使用zip合并相邻列表项的方法示例
Mar 17 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
Nov 18 Python
python文件选择对话框的操作方法
Jun 27 Python
jupyter实现重新加载模块
Apr 16 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 Python
Pycharm操作Git及GitHub的步骤详解
Oct 27 Python
用python发送微信消息
Dec 21 Python
python 实现体质指数BMI计算
May 26 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 zend解密软件绿色版测试可用
2008/04/14 PHP
怎样去阅读一份php源代码
2009/08/21 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
PHP4和PHP5版本下解析XML文档的操作方法实例分析
2017/05/20 PHP
php-msf源码详解
2017/12/25 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
Vue 中的compile操作方法
2018/02/26 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
2019/11/05 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
2020/06/02 jQuery
JS实现百度搜索框
2021/02/25 Javascript
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
浅谈Django REST Framework限速
2017/12/12 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
python unittest实现api自动化测试
2018/04/04 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
python生成大写32位uuid代码
2020/03/03 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
怎么写好自荐信
2013/10/30 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
实习报告范文
2019/07/30 职场文书
Ajax实现异步加载数据
2021/11/17 Javascript
python中对列表的删除和添加方法详解
2022/02/24 Python