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
同级),不然执行后会路径不对,然后刚提到的那三个文件和文件夹可以删除了