Python搭建FTP局域网文件高速下载服务器

2019-10-28  本文已影响0人  Swift编程初学者

话别多说,先上代码

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

authorizer = DummyAuthorizer()
# 设置权限登录
# authorizer.add_user('Mr.Ming', '123456', './ftp_dir', perm = 'elradfmw')
# 设置匿名登录
authorizer.add_anonymous('./ftp_dir')
handler = FTPHandler
handler.authorizer = authorizer
server = FTPServer(('10.7.181.59', 618), handler)
server.serve_forever()

首先需要pip安装第三方库
由于我用的Windows上只有Python3这个版本,可以直接使用

pip install pyftpdlib

Mac或Linux用户则需要根据Python版本来安装
Python2

pip2 install pyftpdlib

Python3

pip3 install pyftpdlib

Python2的环境应该不做任何修改直接使用,Python2用户自行体验一下

出去前面三行导包,从正式的代码开始,不包含注释:
第一行: 创建一个用户对象
第二行第三行二选一:添加用户
第二行:添加一个需要账号,密码访问的用户,(参数:用户名 密码 访问路径 权限)
关于权限见下图

权限参数
第三行:添加一个匿名用户,不需要密码访问指定路径,(参数:访问路径)
访问路径: ./.py文件的当前目录
第四行:创建FTPHeadler句柄,(什么是句柄以及什么是FTPHeadler句柄,自行百度,我这里搜到一篇:什么是句柄?为什么会有句柄?HANDLE)
第五行:将用户对象加入到句柄(最开始我把Handler搞成了消息队列,所以这里解释的可能有点不准确)
第六行:创建FTP服务实例,(初始化参数:第一个是一个元组,元组第一个是本机在局域网内的地址,元组第二个是端口)
第七行: 启动服务

只有第二三行和第六行可以自定义外,其他都是固定格式

终端用Python运行,开启服务

python ftp_server.py

如果不想每次都输python,可以修改文件权限为可执行,在脚本开头加上

#![python的安装路径]
...

如果嫌Python脚本运行时占用终端的界面,无法做其他,可以安装相应的工具转换成可执行文件
比如Windows上可以安装PyInstaller打包成.exe可执行文件
首先要用pip安装这个包

pip install pyinstaller

安装好后终端切换路径到ftp_server.py的路径,执行命令

pyinstaller -F ftp_server.py

(PyInstaller的具体使用请自查)
完成后在当前目录下生成了一个叫ftp_server.pyc的编译文件,一个用于构建的Build文件夹,还有一个叫dist的文件夹,里面就是最终生成的ftp_server.exe可执行文件,把ftp_server.exe复制到上一级(与ftp_server.py同级),不然执行后会路径不对,然后刚提到的那三个文件和文件夹可以删除了

上一篇下一篇

猜你喜欢

热点阅读