「玩转Python」一行代码金屋藏娇


前言

最近,很多小伙伴私下里问,从零学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 的第三方组件还是很强大的,建议喜欢折腾的程序员,都尝试学习一下这门语言,你会有意想不到的收获,比如收藏小黄图,阅读原文有惊喜!!!

源码

https://gitee.com/52itstyle/Python/tree/master/Day28

爪哇笔记

作者: 小柒

出处: https://blog.52itstyle.vip

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(345849402@qq.com)咨询。