python实现ftp服务端和客户端

简介: python实现ftp服务端和客户端

python中内置了一个ftp客户端,但是要实现ftp服务端还需要安装一个第三方库pyftpdlib

pyftpdlib

pyftpdlib实现了一个功能完整的异步FTP服务,开源代码地址:
https://github.com/giampaolo/pyftpdlib

安装pyftpdlib

安装方式有很多种,推荐使用pip;

pip 是 Python 的包安装程序。其实,pip 就是 Python 标准库(The Python Standard Library)中的一个包,只是这个包比较特殊,用它可以来管理 Python 标准库(The Python Standard Library)中其他的包。pip 是一个命令行程序。 安装 pip 后,会向系统添加一个 pip 命令,该命令可以从命令提示符运行。

安装pip:

  • 安装python; 这个是必须安装的;
  • 下载pip:

    > 官网地址:https://pypi.org/project/pip/#downloads; 下载完毕后,解压
    • 打开命令行窗口,进入到pip解压后的目录;执行代码

      python3 setup.py install
      进行安装,
      安装完成后,将pip加入到系统环境变量中
  • 验证
    打开命令行窗口,输入pip list 或者pip3 list

在这里插入图片描述

以上只针对于windows系统,其他系统也可以参考;

  • 安装所需库:
    打开命令行窗口,输入执行以下代码,并回车

    pip install pyftpdlib

    等待提示第三库安装成功既可;

启动FTP服务

pyftpdlib 安装成功后,在命令行输入

python3 -m pyftpdlib -p 21

即可启动一个简单的ftp服务,不够默认启动的ftp服务只有一个无密码的匿名用户,如果想添加用户和权限,需要编码实现;

编码实现一个有用户和权限认证的FTP服务端

def ftpServer():
    import pyftpdlib
    # 该脚本程序是运行在windows上的ftp
    from pyftpdlib.authorizers import DummyAuthorizer
    from pyftpdlib.handlers import FTPHandler
    from pyftpdlib.servers import FTPServer
   
    #实例化虚拟用户
    authorizer = DummyAuthorizer()
    # 添加用户权限和路径
    authorizer.add_user('user', '123456', "d:/", perm="elradfmw")
    # 添加匿名用户,只需要路径
    authorizer.add_anonymous("d:/")
    #初始化ftp句柄
    handler = FTPHandler
    handler.authorizer = authorizer
    #添加被动端口范围
    handler.passive_ports = range(2000,20033)
    # 监听ip和端口
    server = FTPServer(('0.0.0.0', 21), handler)
    # 开始服务
    server.serve_forever()

运行以上代码,启动一个ftp服务;

ftp客户端

以上在本地启动了一个ftp服务,测试的时候,可以使用windows自有的ftp客户端连接测试;

打开命令行窗口,输入
ftp 127.0.0.1
输入用户,密码
测试结果

另外,python中也内置了ftp客户端库 ftplib

使用python中的FTP客户端

  1. 首先导入FTP
from ftplib import FTP
  1. 实例化FTP对象
ftp = FTP()
  1. 连接ftp,传入host和端口
ftp.connect(host, port)
  1. 登录到ftp,使用login方法,传入用户密码
ftp.login(u,p)
  1. 登录ftp成功,进行文件的上传和下载操作;

上传使用storbinary方法:

 buf_size = 1024
        file_handler = open(local_file, 'rb')
        ftp.storbinary('STOR %s' % remote_file, file_handler, buf_size)
        file_handler.close()

下载使用retrbinary方法

  try:
   buf_size = 1024
   file_handler = open(local_file, 'wb')
ftp.retrbinary('RETR %s' % remote_file, file_handler.write, buf_size)
 file_handler.close()
 except Exception as err:
     return

执行完FTP操作后,需要关闭连接

ftp.quit()

以上至实现了ftp的日常操作;关于ftp其他相关操作,可以参考官方文档;

相关文章
|
10月前
|
监控 网络安全 开发者
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
349 20
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
615 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
621 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
存储 数据安全/隐私保护 Python
Python编程--使用Ftplib破解FTP用户口令的方法
Python编程--使用Ftplib暴力破解FTP用户口令
143 1
|
中间件 Docker Python
【Azure Function】FTP上传了Python Function文件后,无法在门户页面加载函数的问题
通过FTP上传Python Function至Azure云后,出现函数列表无法加载的问题。经排查,发现是由于`requirements.txt`中的依赖包未被正确安装。解决方法为:在本地安装依赖包到`.python_packages/lib/site-packages`目录,再将该目录内容上传至云上的`wwwroot`目录,并重启应用。最终成功加载函数列表。
148 0
|
关系型数据库 MySQL Python
mysql之python客户端封装类
mysql之python客户端封装类
|
传感器 数据采集 算法
python实现ModBusRTU客户端方式
python实现基于串口通信的ModBusRTU客户端是一件简单的事情,只要通过pymodbus模块就可以实现。
274 22
|
网络协议 安全 Unix
6! 用Python脚本演示TCP 服务器与客户端通信过程!
6! 用Python脚本演示TCP 服务器与客户端通信过程!
343 1
|
传感器 数据采集 算法
python实现ModBusRTU客户端方式
python实现基于串口通信的ModBusRTU客户端是一件简单的事情,只要通过pymodbus模块就可以实现。
|
开发者 Python
深入解析Python `httpx`源码,探索现代HTTP客户端的秘密!
深入解析Python `httpx`源码,探索现代HTTP客户端的秘密!
309 1

推荐镜像

更多