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 搭建Web站点之Web服务器网关接口
Nov 06 Python
Python中表达式x += y和x = x+y 的区别详解
Jun 20 Python
python爬虫headers设置后无效的解决方法
Oct 21 Python
TensorFlow实现创建分类器
Feb 06 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
Jul 09 Python
python3实现逐字输出的方法
Jan 23 Python
Python程序包的构建和发布过程示例详解
Jun 09 Python
python递归调用中的坑:打印有值, 返回却None
Mar 16 Python
用 Python 制作地球仪的方法
Apr 24 Python
python怎么判断模块安装完成
Jun 19 Python
Python图片处理之图片裁剪教程
May 27 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无限级栏目分类读取的实现代码
2014/02/19 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
学习php设计模式 php实现抽象工厂模式
2015/12/07 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
JavaScript中this详解
2015/09/01 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
python远程登录代码
2008/04/29 Python
python基于右递归解决八皇后问题的方法
2015/05/25 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
提升Python程序性能的7个习惯
2019/04/14 Python
Django配置文件代码说明
2019/12/04 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
2013/01/09 HTML / CSS
巴西在线鞋店:Shoestock
2017/10/28 全球购物
商场经理竞聘演讲稿
2014/01/01 职场文书
索桥的故事教学反思
2014/02/06 职场文书
装修协议书范本
2014/04/21 职场文书
售后服务承诺书模板
2014/05/21 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
教师调动申请报告
2015/05/18 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
Win11怎么修改电源模式?Win11修改电源模式的方法
2022/04/05 数码科技
python 学习GCN图卷积神经网络
2022/05/11 Python