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 相关文章推荐
详细介绍Ruby中的正则表达式
Apr 10 Python
python图像处理之镜像实现方法
May 30 Python
Python抽象和自定义类定义与用法示例
Aug 23 Python
Python企业编码生成系统之主程序模块设计详解
Jul 26 Python
pandas DataFrame的修改方法(值、列、索引)
Aug 02 Python
python socket 聊天室实例代码详解
Nov 14 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
Dec 13 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 20 Python
忆童年!用Python实现愤怒的小鸟游戏
Jun 07 Python
详解在OpenCV中如何使用图像像素
Mar 03 Python
python中的sys模块和os模块
Mar 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安全配置
2006/12/06 PHP
php合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
PHP页面实现定时跳转的方法
2014/10/31 PHP
Firefox div高度自适应
2009/04/28 Javascript
JQuery调用WebServices的方法和4个实例
2014/05/06 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
2016/07/05 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
2016/12/16 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
Python中的一些陷阱与技巧小结
2015/07/10 Python
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
Tessabit日本:集世界奢侈品和设计师品牌的意大利精品买手店
2020/01/07 全球购物
英语翻译系毕业生求职信
2013/09/29 职场文书
酒店管理毕业生自荐信
2013/10/24 职场文书
电气专业推荐信范文
2013/11/18 职场文书
迎新晚会策划方案
2014/06/13 职场文书
班干部学习委员竞选稿
2015/11/20 职场文书
redis缓存存储Session原理机制
2021/11/20 Redis
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技