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中的socket模块使用代理实例
May 29 Python
python分析nignx访问日志脚本分享
Feb 26 Python
python登录pop3邮件服务器接收邮件的方法
Apr 30 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
Jul 13 Python
浅谈Python由__dict__和dir()引发的一些思考
Oct 30 Python
python实现电脑自动关机
Jun 20 Python
python内置数据类型之列表操作
Nov 12 Python
详解Python二维数组与三维数组切片的方法
Jul 18 Python
Django中提示消息messages的设置方式
Nov 15 Python
pytorch中的自定义数据处理详解
Jan 06 Python
python解压zip包中文乱码解决方法
Nov 27 Python
tensorflow中的数据类型dtype用法说明
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根据日期判断星座的函数分享
2014/02/13 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
半角全角相互转换的js函数
2009/10/16 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
探索Vue.js component内容实现
2016/11/03 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
微信小程序 两种为对象属性赋值的方式详解
2017/02/23 Javascript
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
python复制与引用用法分析
2015/04/08 Python
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
Linux下多个Python版本安装教程
2018/08/15 Python
python tornado修改log输出方式
2019/11/18 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
使用SVG实现提示框功能的示例代码
2020/06/05 HTML / CSS
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
如何客观的进行自我评价
2013/12/17 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
客户付款通知书
2015/04/23 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL