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装饰器
May 09 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
Python聊天室实例程序分享
Jan 05 Python
解决pandas 作图无法显示中文的问题
May 24 Python
谈谈Python中的while循环语句
Mar 10 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
Pytorch中accuracy和loss的计算知识点总结
Sep 10 Python
Python远程方法调用实现过程解析
Jul 28 Python
python在地图上画比例的实例详解
Nov 13 Python
Python 实现PS滤镜的旋涡特效
Dec 03 Python
提取视频中的音频 Python只需要三行代码!
May 10 Python
python迷宫问题深度优先遍历实例
Jun 20 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的in_array低性能问题
2013/09/17 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
PHP函数http_build_query使用详解
2014/08/20 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
php微信开发之关注事件
2018/06/14 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
javascript小数计算出现近似值的解决办法
2010/02/06 Javascript
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
Backbone.js的一些使用技巧
2015/07/01 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
puppeteer库入门初探
2019/01/09 Javascript
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
2020/08/03 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
简单介绍Ruby中的CGI编程
2015/04/10 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
python基础教程之while循环
2019/08/14 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
Python3并发写文件与Python对比
2019/11/20 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
python exit出错原因整理
2020/08/31 Python
自荐信格式
2013/12/01 职场文书
六一儿童节活动总结
2014/08/27 职场文书
党校毕业心得体会
2014/09/13 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书