Python搭建FTP服务器的方法示例


Posted in Python onJanuary 19, 2018

Python版本 3.6.2

使用的ftp包:pyftpdlib    pip install pyftpdlib就可以下载安装了

FTP协议下载上传文件在文件过大的情况下会比HTTP更具有优势,更为方便的实现断点上传和进度监控,下面是官方文档中的

基本方法

import os 
from pyftpdlib.authorizers import DummyAuthorizer 
from pyftpdlib.handlers import FTPHandler 
from pyftpdlib.servers import FTPServer 
 
def main(): 
  # 实例化用户授权管理 
  authorizer = DummyAuthorizer() 
  authorizer.add_user('user', '12345', 'path', perm='elradfmwMT')#添加用户 参数:username,password,允许的路径,权限 
  authorizer.add_anonymous(os.getcwd())#这里是允许匿名用户,如果不允许删掉此行即可 
 
  # 实例化FTPHandler 
  handler = FTPHandler 
  handler.authorizer = authorizer 
 
  # 设定一个客户端链接时的标语 
  handler.banner = "pyftpdlib based ftpd ready." 
 
  #handler.masquerade_address = '151.25.42.11'#指定伪装ip地址 
  #handler.passive_ports = range(60000, 65535)#指定允许的端口范围 
 
  address = (ipaddr, 21)#FTP一般使用21,20端口 
  server = FTPServer(address, handler)#FTP服务器实例 
 
  # set a limit for connections 
  server.max_cons = 256 
  server.max_cons_per_ip = 5 
 
  # 开启服务器 
  server.serve_forever() 
 
if __name__ == '__main__': 
  main()

开启ftp服务器后要确定防火墙开启了21,20端口,并且在客户端的浏览器中设置internet选项高级选项卡中的被动ftp的勾去掉之后才能登陆到ftp服务器

从Windows登录到服务器:

Python搭建FTP服务器的方法示例

利用Python从ftp服务器上下载文件

from ftplib import FTP 
ftp=FTP() 
ftp.connect('localhost',21)#localhost改成服务器ip地址 
ftp.login(user='user',passwd='12345') 
 
file=open('f://ftpdownload/test.txt','wb') 
ftp.retrbinary("RETR test.txt",file.write,1024)#从服务器上下载文件 1024字节一个块 
ftp.set_debuglevel(0) 
ftp.close()

FTP服务器事件回调函数:

class MyHandler(FTPHandler):  
  def on_connect(self):#链接时调用 
    print "%s:%s connected" % (self.remote_ip, self.remote_port) 
 
  def on_disconnect(self):#关闭连接是调用 
    # do something when client disconnects 
    pass 
 
  def on_login(self, username):#登录时调用 
    # do something when user login 
    pass 
 
  def on_logout(self, username):#登出时调用 
    # do something when user logs out 
    pass 
 
  def on_file_sent(self, file):#文件下载后调用 
    # do something when a file has been sent 
    pass 
 
  def on_file_received(self, file):#文件上传后调用 
    # do something when a file has been received 
    pass 
 
  def on_incomplete_file_sent(self, file):#下载文件时调用 
    # do something when a file is partially sent 
    pass 
 
  def on_incomplete_file_received(self, file):#上传文件时调用 
    # remove partially uploaded files 
    import os 
    os.remove(file)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过文件头判断文件类型
Oct 30 Python
python numpy 显示图像阵列的实例
Jul 02 Python
用Django写天气预报查询网站
Oct 21 Python
python3使用pandas获取股票数据的方法
Dec 22 Python
python常用函数与用法示例
Jul 02 Python
python excel转换csv代码实例
Aug 26 Python
Python 使用元类type创建类对象常见应用详解
Oct 17 Python
python 定义类时,实现内部方法的互相调用
Dec 25 Python
Python属性和内建属性实例解析
Jan 14 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
Python3爬虫中Ajax的用法
Jul 10 Python
linux mint中搜狗输入法导致pycharm卡死的问题
Oct 28 Python
python re模块findall()函数实例解析
Jan 19 #Python
Python enumerate索引迭代代码解析
Jan 19 #Python
5个很好的Python面试题问题答案及分析
Jan 19 #Python
Python3实现的画图及加载图片动画效果示例
Jan 19 #Python
Python实现将doc转化pdf格式文档的方法
Jan 19 #Python
python机器学习理论与实战(四)逻辑回归
Jan 19 #Python
python机器学习理论与实战(二)决策树
Jan 19 #Python
You might like
php中mt_rand()随机数函数用法
2014/11/24 PHP
PHP CURL 多线程操作代码实例
2015/05/13 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
2015/11/24 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
Phpstorm+Xdebug断点调试PHP的方法
2018/05/14 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
JS实现QQ图片一闪一闪的效果小例子
2013/07/31 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
Vue响应式原理详解
2017/04/18 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
python中的一些类型转换函数小结
2013/02/10 Python
Python正则表达式实现截取成对括号的方法
2017/01/06 Python
使用NumPy和pandas对CSV文件进行写操作的实例
2018/06/14 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
请说出你所知道的线程同步的方法
2013/04/19 面试题
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
测绘工程个人的自我评价
2013/11/10 职场文书
工程测量与监理专业应届生求职信
2013/11/27 职场文书
区域销售经理岗位职责
2013/12/10 职场文书
2015年春节标语口号
2014/12/09 职场文书
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS