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通过imaplib模块读取gmail里邮件的方法
May 08 Python
在Python中操作列表之list.extend()方法的使用
May 20 Python
python中的lambda表达式用法详解
Jun 22 Python
python遍历序列enumerate函数浅析
Oct 17 Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 Python
Django处理多用户类型的方法介绍
May 18 Python
关于Python作用域自学总结
Jun 10 Python
使用 Django Highcharts 实现数据可视化过程解析
Jul 31 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
django echarts饼图数据动态加载的实例
Aug 12 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
python 模块导入问题汇总
Feb 01 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
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
封装的原生javascript弹出层代码
2010/09/24 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
jQuery图片拖动组件Dropzone用法示例
2017/01/17 Javascript
canvas绘制七巧板
2017/02/03 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
javascript实现倒计时效果
2020/02/17 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
python实现根据图标提取分类应用程序实例
2014/09/28 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
实例说明Python中比较运算符的使用
2015/05/13 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
如何在网站上添加谷歌定位信息
2016/04/16 HTML / CSS
大学在校生求职信范文
2013/11/21 职场文书
学习雷锋倡议书
2014/04/15 职场文书
拓展策划方案
2014/06/03 职场文书
学习十八大的心得体会
2014/09/12 职场文书
员工离职通知函
2015/04/25 职场文书
欠款证明
2015/06/24 职场文书
优质护理心得体会
2016/01/22 职场文书
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js