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内置数据类型详解
Aug 18 Python
python计算牛顿迭代多项式实例分析
May 07 Python
详解Django中的form库的使用
Jul 18 Python
Swift 3.0在集合类数据结构上的一些新变化总结
Jul 11 Python
Python操作Redis之设置key的过期时间实例代码
Jan 25 Python
Python内置函数reversed()用法分析
Mar 20 Python
python实现决策树分类(2)
Aug 30 Python
pip install 使用国内镜像的方法示例
Apr 03 Python
Python通过Pillow实现图片对比
Apr 29 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
May 26 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 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
图书管理程序(三)
2006/10/09 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
node文字生成图片的示例代码
2017/10/26 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
vue-autoui自匹配webapi的UI控件的实现
2020/03/20 Javascript
python自动格式化json文件的方法
2015/03/11 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
Python发展简史 Python来历
2019/05/14 Python
python求平均数、方差、中位数的例子
2019/08/22 Python
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
文明城市创建标语
2014/06/16 职场文书
员工试用期自我评价
2014/09/18 职场文书
镇副书记专题民主生活会对照检查材料思想汇报
2014/10/02 职场文书
家长学校教学计划
2015/01/19 职场文书
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js