FTP server默认的端口号为21,20端口用于数据传输。

本文参考地址:https://docs.python.org/3.6/library/ftplib.html

  1. ftplib里包含FTP和FTP_TLS两个class,后者是封装了TLS安全传输协议的FTP,本文不多描述,查看官网即可,很简单。

  2. ftplib.FTP class就是一个模拟FTP协议客户端的class,可以使用此class与FTP server进行各种交互,如数据上传和下载等。

  3. FTP的数据传输有两种模式ASCII和binary格式,一般来说使用binary格式更加的普遍,适用场景较多。也因此FTP class最常用的四个method其实是:

FTP.storbinary(cmd, fp, blocksize=8192, callback=None, rest=None)
FTP.storlines(cmd, fp, callback=None)
FTP.retrbinary(cmd, callback, blocksize=8192, rest=None)
FTP.retrlines(cmd, callback=None)
其中storbinary与retrbinary就是进行二进制数据传输的method。

FTP数据下载:

一般来说,生产上会将ftp用户的访问权限限定在自己的家目录下(可通过修改/etc/vsftpd.conf来改变此行为模式)。

# The FTP class supports the with statement, e.g.:
from ftplib import FTP
with FTP('<ftp server IP>','user','passwd') as c,\open('<local filename/local fullpath_filename>','wb') as f:c.retrbinary('RETR <remote ftpserver filename>',f.write)
# 直接使用host,user,passwd参数初始化FTP,相当于执行了FTP.connect().login(),简便起见一般不这么麻烦的写
# f.closed为True可知文件已自动关闭

FTP class支持python context的with语法,此语法在python中是普遍推荐的,可以帮你自动处理相关对象的上下文,也就是说可以帮你自动关闭相关的对象,防止自己忘了quit or close。

retr开头的两个method主要参数是cmd和callback,前者是获取文件的命令,格式为“RETR filename”,后者即callback为回调函数,一般为openfile.write,表示将相关数据流写入一个打开的文件,文件打开的方式取决于使用的retr method,例如retrbinary()可以使用’wb’打开的文件。

FTP数据上传:

相应的数据上传的函数就是以stor开头的两个函数:storbinary与storlines,依然推荐使用前者,二进制总是比较受信任的。

from ftplib import FTP
with FTP('<ftp server IP>','user','passwd') as c,\open('<local filename/local fullpath_filename>','rb') as f:c.storbinary('STOR <remote filename/remote fullpath_filename>',f)

同样的,上传文件的CMD格式为“STOR 文件名”。

需要注意的是retr函数使用的是callback函数来将要下载的文件写入到本地open的文件中,而stor函数则在server端打开一个文python基础教程件,然后将要上传的数据写入。

其他:

关于FTP server常见的returncode,参考:https://kb.globalscape.com/Knowledgebase/10142/FTP-Status-and-Error-Codes

python2时FTP()对象可以不包含可以使用with子句的__enter__,__exit__方法,可以使用如下方式变通:

c = FTP('<ftp server IP>','user','passwd')
...
c.quit()

想建一个数据库技术和编程技术的交流群,用于磨炼提c#教程升技术能力,目前主要专注于Golang和Python以及TiDB,MySQL数据库,群号:231338927,建群日期:2019.04.26,截止2021.02.01人数:300人 …

ftplib实现FTP上传与下载的功能相关推荐

  1. windows下定时利用bat脚本实现ftp上传和下载

    前言: 工作中可能会遇到以下情况,利用windows作为中转,来实现两台linux服务器的文件传输. 实现步骤: 1.FTP上传和下载的bat脚本. 脚本分为两部分:可执行bat脚本和ftp命令文件: ...

  2. [ASP.NET]web实现用FTP上传、下载文件(附源码)

    文章配套源码下载地址:https://download.csdn.net/download/djk8888/10486581 index.aspx 页: <%@ Page Language=&q ...

  3. filezilla定时上传_windows下定时利用bat脚本实现ftp上传和下载

    前言: 工作中可能会遇到以下情况,利用windows作为中转,来实现两台linux服务器的文件传输. 实现步骤: 1.FTP上传和下载的bat脚本. 脚本分为两部分:可执行bat脚本和ftp命令文件: ...

  4. sex 无需下载_elipse FTP插件 - Sexftp 支持FTP上传、下载、比较等功能

    Sexftp简介 Sexftp是FTP上传与下载的eclipse插件,集成在ECLIPSE中,方便开发人员进行FTP相关操作,省去来回切换工具及选择目录的麻烦. Sexftp支持上传.下载等基本操作; ...

  5. C# FTP上传、下载、删除

    01 - FTP概述 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,作为一套古老的网络工具,在工业界有着及其广泛的应用.本节主要给大家演 ...

  6. winform实现FTP上传、下载、删除文件(附源码下载)

    一个用winform开发的FTP上传.下载.删除文件的简单列子: 配套源码下载:https://download.csdn.net/download/djk8888/10473477 注释尽可能详尽, ...

  7. 【Python学习 】Python实现的FTP上传和下载功能

    一.背景 最近公司的一些自动化操作需要使用Python来实现FTP的上传和下载功能.因此参考网上的例子,撸了一段代码来实现了该功能,下面做个记录. 二.ftplib介绍 Python中默认安装的ftp ...

  8. ftp 传输速度_ftp上传工具下载,8款优秀的ftp上传工具下载软件

    FTP上传工具现在有很多种,而且各有各的特点,至于FTP上传工具哪个好用呢?小编认为萝卜白菜各有所爱,看个人喜好,还结合服务器和各种功能方面的需求.小编用的就是iis7服务器管理工具,比较方便而且功能 ...

  9. 3行代码实现ftp 上传、下载、删除操作集合

    为了帮助小伙伴们便捷操作ftp,现对常用的上传.下载.删除功能进行封装,小伙伴只需要传入需要的参数操作即可!告诉小伙伴好消息,本项目我已开源,大家可以根据需要克隆run起来!!! 文章目录 一.集合总 ...

最新文章

  1. 2021/6/18~19 每天学习python 30分钟 -了解python - python的基本变量概述
  2. java多线程间的通信传值_Java 多线程之间的通信
  3. Java基础之String深入解析
  4. java简述标识符和保留字区别_Java 基础语法 - 流年似水莫停留的个人页面 - OSCHINA - 中文开源技术交流社区...
  5. html gif循环播放,Easy GIF Animator 7设置gif动图循环播放次数的方法
  6. memcache 知识点
  7. 神奇的机器人评课_《机器人》教学反思
  8. linux安装 tomcat 6 笔记
  9. vue 点击文字input_vue input实现点击按钮文字增删功能示例
  10. css3中transform-style的用法
  11. 【樽海鞘算法】基于衰减因子和动态学习的改进樽海鞘群算法(RDSSA)求解单目标优化问题matlab代码
  12. java swing tooltips_tooltips 提示
  13. 旧手机改电脑外挂,文本补充
  14. 微信公众平台三方授权登录(Java实现)
  15. 盘点人工智能十大经典应用领域、图解技术原理
  16. Tunnello安装指南
  17. python图片保存jpg、show变成bmp_Python 图片格式转换
  18. 麒麟操作系统iso文件中的img文件的解压与压缩
  19. 【英语:基础进阶_核心词汇扩充】E4.常见词根拓词
  20. 手机端长按文字复制功能

热门文章

  1. c语言 max库函数,C 库函数 – strftime() | 菜鸟教程
  2. 使用字蛛实现字体压缩
  3. Java 计算工作日,休假,调休,调班等
  4. 2012给自己的新年寄语
  5. 【FPGA+PWM】基于FPGA的PWM控制器实现
  6. 51单片机独立按键联动数码管LED蜂鸣器
  7. 如何使用单片机点亮LED灯,并使用按键控制[51单片机]
  8. 什么电脑配置玩暗黑破坏神4比较好?驱动人生游戏配置推荐
  9. 安卓大json文件解析_安卓解析 json 4种格式 全解析
  10. 线上水果店如何运营?生鲜小程序制作 水果店小程序制作 生鲜行业引爆客源