ftplib实现FTP上传与下载的功能
FTP server默认的端口号为21,20端口用于数据传输。
本文参考地址:https://docs.python.org/3.6/library/ftplib.html
ftplib里包含FTP和FTP_TLS两个class,后者是封装了TLS安全传输协议的FTP,本文不多描述,查看官网即可,很简单。
ftplib.FTP class就是一个模拟FTP协议客户端的class,可以使用此class与FTP server进行各种交互,如数据上传和下载等。
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上传与下载的功能相关推荐
- windows下定时利用bat脚本实现ftp上传和下载
前言: 工作中可能会遇到以下情况,利用windows作为中转,来实现两台linux服务器的文件传输. 实现步骤: 1.FTP上传和下载的bat脚本. 脚本分为两部分:可执行bat脚本和ftp命令文件: ...
- [ASP.NET]web实现用FTP上传、下载文件(附源码)
文章配套源码下载地址:https://download.csdn.net/download/djk8888/10486581 index.aspx 页: <%@ Page Language=&q ...
- filezilla定时上传_windows下定时利用bat脚本实现ftp上传和下载
前言: 工作中可能会遇到以下情况,利用windows作为中转,来实现两台linux服务器的文件传输. 实现步骤: 1.FTP上传和下载的bat脚本. 脚本分为两部分:可执行bat脚本和ftp命令文件: ...
- sex 无需下载_elipse FTP插件 - Sexftp 支持FTP上传、下载、比较等功能
Sexftp简介 Sexftp是FTP上传与下载的eclipse插件,集成在ECLIPSE中,方便开发人员进行FTP相关操作,省去来回切换工具及选择目录的麻烦. Sexftp支持上传.下载等基本操作; ...
- C# FTP上传、下载、删除
01 - FTP概述 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,作为一套古老的网络工具,在工业界有着及其广泛的应用.本节主要给大家演 ...
- winform实现FTP上传、下载、删除文件(附源码下载)
一个用winform开发的FTP上传.下载.删除文件的简单列子: 配套源码下载:https://download.csdn.net/download/djk8888/10473477 注释尽可能详尽, ...
- 【Python学习 】Python实现的FTP上传和下载功能
一.背景 最近公司的一些自动化操作需要使用Python来实现FTP的上传和下载功能.因此参考网上的例子,撸了一段代码来实现了该功能,下面做个记录. 二.ftplib介绍 Python中默认安装的ftp ...
- ftp 传输速度_ftp上传工具下载,8款优秀的ftp上传工具下载软件
FTP上传工具现在有很多种,而且各有各的特点,至于FTP上传工具哪个好用呢?小编认为萝卜白菜各有所爱,看个人喜好,还结合服务器和各种功能方面的需求.小编用的就是iis7服务器管理工具,比较方便而且功能 ...
- 3行代码实现ftp 上传、下载、删除操作集合
为了帮助小伙伴们便捷操作ftp,现对常用的上传.下载.删除功能进行封装,小伙伴只需要传入需要的参数操作即可!告诉小伙伴好消息,本项目我已开源,大家可以根据需要克隆run起来!!! 文章目录 一.集合总 ...
最新文章
- 2021/6/18~19 每天学习python 30分钟 -了解python - python的基本变量概述
- java多线程间的通信传值_Java 多线程之间的通信
- Java基础之String深入解析
- java简述标识符和保留字区别_Java 基础语法 - 流年似水莫停留的个人页面 - OSCHINA - 中文开源技术交流社区...
- html gif循环播放,Easy GIF Animator 7设置gif动图循环播放次数的方法
- memcache 知识点
- 神奇的机器人评课_《机器人》教学反思
- linux安装 tomcat 6 笔记
- vue 点击文字input_vue input实现点击按钮文字增删功能示例
- css3中transform-style的用法
- 【樽海鞘算法】基于衰减因子和动态学习的改进樽海鞘群算法(RDSSA)求解单目标优化问题matlab代码
- java swing tooltips_tooltips 提示
- 旧手机改电脑外挂,文本补充
- 微信公众平台三方授权登录(Java实现)
- 盘点人工智能十大经典应用领域、图解技术原理
- Tunnello安装指南
- python图片保存jpg、show变成bmp_Python 图片格式转换
- 麒麟操作系统iso文件中的img文件的解压与压缩
- 【英语:基础进阶_核心词汇扩充】E4.常见词根拓词
- 手机端长按文字复制功能
热门文章
- c语言 max库函数,C 库函数 – strftime() | 菜鸟教程
- 使用字蛛实现字体压缩
- Java 计算工作日,休假,调休,调班等
- 2012给自己的新年寄语
- 【FPGA+PWM】基于FPGA的PWM控制器实现
- 51单片机独立按键联动数码管LED蜂鸣器
- 如何使用单片机点亮LED灯,并使用按键控制[51单片机]
- 什么电脑配置玩暗黑破坏神4比较好?驱动人生游戏配置推荐
- 安卓大json文件解析_安卓解析 json 4种格式 全解析
- 线上水果店如何运营?生鲜小程序制作 水果店小程序制作 生鲜行业引爆客源