Python代码使用 Pyftpdlib实现FTP服务器功能


Posted in Python onJuly 22, 2019

当你想快速共享一个目录的时候,这是特别有用的,只需要1行代码即可实现。

FTP 服务器,在此之前我都是使用Linux的vsftpd软件包来搭建FTP服务器的,现在发现了利用pyftpdlib可以更加简单的方法即可实现FTP服务器的功能。

环境要求

  • Python 2.7
  • Windows / Linux

环境搭建

pip install pyftpdlib

一行代码实现FTP服务器

通过Python的-m选项作为一个简单的独立服务器来运行,当你想快速共享一个目录的时候,这是特别有用的。
在需要共享的目录下执行如下命令即可把当前目录共享出去(匿名登录)

python -m pyftpdlib

至此一个简单的FTP服务器已经搭建完成,访问 ftp://127.0.0.1:2121 即可

(默认IP为 127.0.0.1 、端口为 2121 )

效果图

Python代码使用 Pyftpdlib实现FTP服务器功能

可选参数

  • -i 指定IP地址(默认为本机的IP地址)
  • -p 指定端口(默认为2121)
  • -w 写权限(默认为只读)
  • -d 指定目录 (默认为当前目录)
  • -u 指定用户名登录
  • -P 设置登录密码

简单示例

上述的一行命令已经可以实现一个简单的FTP服务器,但是要搭建一个功能强大完善的FTP服务所涉及到的配置较多,这时需要使用Pyftpdlib提供的 API 来编写。如下是一个简单的示例

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

# 实例化DummyAuthorizer来创建ftp用户
authorizer = DummyAuthorizer()
# 参数:用户名,密码,目录,权限
authorizer.add_user('user', '12345', '/opt/pyftp/test', perm='elradfmwMT')
# 匿名登录
# authorizer.add_anonymous('/home/nobody')
handler = FTPHandler
handler.authorizer = authorizer
# 参数:IP,端口,handler
server = FTPServer(('192.168.56.100', 21), handler)
server.serve_forever()

perm权限选项

读取权限:

  • "e" =更改目录(CWD,CDUP命令)
  • "l" =列表文件(LIST,NLST,STAT,MLSD,MLST,SIZE命令)
  • "r" =从服务器检索文件(RETR命令)

写入权限:

  • "a" =将数据追加到现有文件(APPE命令)
  • "d" =删除文件或目录(DELE,RMD命令)
  • "f" =重命名文件或目录(RNFR,RNTO命令)
  • "m" =创建目录(MKD命令)
  • "w" =将文件存储到服务器(STOR,STOU命令)
  • "M"=更改文件模式/权限(SITE CHMOD命令)
  • "T"=更改文件修改时间(SITE MFMT命令)

参考

Pyftpdlib文档:http://pyftpdlib.readthedocs.io/en/latest/index.html

总结

以上所述是小编给大家介绍的Python代码使用 Pyftpdlib实现FTP服务器功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python smtplib发送带附件邮件小程序
May 22 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
Django-Rest-Framework 权限管理源码浅析(小结)
Nov 12 Python
用Pelican搭建一个极简静态博客系统过程解析
Aug 22 Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
May 17 Python
Python如何实现邮件功能
May 27 Python
Python根据指定文件生成XML的方法
Jun 29 Python
Python logging模块原理解析及应用
Aug 13 Python
python Tornado框架的使用示例
Oct 19 Python
pytorch 预训练模型读取修改相关参数的填坑问题
Jun 05 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
Apr 21 Python
超简单的Python HTTP服务
Jul 22 #Python
对python 中re.sub,replace(),strip()的区别详解
Jul 22 #Python
django框架CSRF防护原理与用法分析
Jul 22 #Python
全面了解django的缓存机制及使用方法
Jul 22 #Python
python logging模块书写日志以及日志分割详解
Jul 22 #Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
Jul 22 #Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
Jul 22 #Python
You might like
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
什么是MVC,好东西啊
2007/05/03 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
php面向对象值单例模式
2016/05/03 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
python实现发送邮件功能
2017/07/22 Python
Python实现图片转字符画的示例代码
2017/08/21 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
基于Django实现日志记录报错信息
2019/12/17 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
python excel多行合并的方法
2020/12/09 Python
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
采购经理岗位职责
2014/02/16 职场文书
腾讯广告词
2014/03/19 职场文书
525心理健康活动总结
2015/05/08 职场文书
Python数据分析入门之数据读取与存储
2021/05/13 Python