前言
最近,很多小伙伴私下里问,从零学Python怎么不更新了?无他唯太忙尔。忙里偷闲,给大家更新一些有意思的小工具(文件共享)。比如,最近收藏了一些小黄图,又不能放百度网盘,只能自己私藏了。
场景
- 早些年前,大家做网站使用的大多都是虚拟主机,每个用户都会分配一个FTP账号。
- 博主上一个公司,做项目,为了快速上传大文件,给每个用户分配了一个目录,使用FTP工具自行上传文件。
- 还有博主的新东家使用的是 windows server 服务器,蓝瘦的一批,被限制了,还不能拷贝。于是博主想搭建一个 Web 文件服务器,提供预览下载。
WEB文件共享
Python3 一行代码就可以搞定文件的局域网共享,切换到文件共享目录,执行以下代码:
python -m http.server port
浏览器输入 http://ip:port
就可以访问共享文件,预览太丑,这里就不放了,放个妹子给大家养养眼。
一行代码,我们就可以搭建局域网文件共享的 Web 服务,但是这个服务只能提供下载服务,无法上传,并且无法进行权限控制。那么问题来了,如何解决呢?各位看官继续向下看。
FTP文件共享
Python 第三方组件就是个大宝库,基本所有的问题都能找到解决文案,只需要安装第三方组件即可:
pip install pyftpdlib
简单命令
python -m pyftpdlib -i 127.0.0.1 -w -d F:\\file -u user -P 123456
说明:
-i 指定IP地址(默认为本机所有可用 IP 地址)
-p 指定端口(默认为 2121)
-w 写权限(默认为只读)
-d 指定目录 (默认为当前目录)
-u 指定登录用户名
-P 指定登录密码
也可以通过以下命令了解更多帮助信息:
python -m pyftpdlib --help
高级使用
简单的一行命令,有时候并不能满足我们的业务需求,比如根据不同的用户,创建FTP账号,对应不同的目录以及操作权限。
# -*- coding: utf-8 -*-
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
from pyftpdlib.authorizers import DummyAuthorizer
if __name__ == '__main__':
authorizer = DummyAuthorizer()
'''
权限说明:
Read permissions:
- "e" = change directory (CWD command)
- "l" = list files (LIST, NLST, STAT, MLSD, MLST, SIZE, MDTM commands)
- "r" = retrieve file from the server (RETR command)
Write permissions:
- "a" = append data to an existing file (APPE command)
- "d" = delete file or directory (DELE, RMD commands)
- "f" = rename file or directory (RNFR, RNTO commands)
- "m" = create directory (MKD command)
- "w" = store a file to the server (STOR, STOU commands)
- "M" = change file mode (SITE CHMOD command)
- "T" = update file last modified time (MFMT command)
'''
'''
这里我们创建一个管理员,拥有所有权限,创建一个普通用户,只拥有浏览权限
'''
authorizer.add_user('admin', 'admin', 'F:\\file', perm='elradfmwM')
authorizer.add_user('user', 'user', 'F:\\file')
handler = FTPHandler
handler.authorizer = authorizer
server = FTPServer(('0.0.0.0', 8888), handler)
server.serve_forever()
启动服务,访问 ftp://ip:port
输入账号密码,就可以访问共享文件了,也可以使用 WinSCP
进行远程访问:
预览太丑,这里不放了,大家自行操作,还是放两个妹子给大家养养眼。
小结
人生苦短,我学Python!总的来说,Python 的第三方组件还是很强大的,建议喜欢折腾的程序员,都尝试学习一下这门语言,你会有意想不到的收获,比如收藏小黄图,阅读原文有惊喜!!!