版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

“老板 来碗面”
“要啥面?”
“内牛满面..”

最近项目上的事情弄得人心累,本来是帮着兄弟项目写套入口代码,搞着搞着就被拉着入坑了。搞开发的都知道,最怕弄这种项目portal的东西,你调用一堆东西,结果各种调用报错都反馈到你这里,导致的结果就是除了啥问题都找你。

最形象的比喻就是,眼前一栋楼,你是看门的。电梯坏了找你、住户被盗了找你、连谁家下水不通了也找你,各种无厘头的破事儿,我就想送出一张图…

共享文件

熟悉Python的朋友们都知道,python自带了一个Simple HTTP Server,可以使用一行代码完成文件的局域网共享操作。
首先进入你需要设置的http服务器目录 (我以自己电脑路径:F:/Working~Study) ,即进入到该目录下,然后:

  • python2: python -m SimpleHTTPServer port
  • python3: python -m http.server port
    我是用一个8888的端口启动服务,最终的共享效果,如下图:

通过一行代码,我们完成了文件共享的http服务,但这个服务有几个问题,仅提供了下载功能无法上传,最重要的是没有权限控制功能,这就极其不安全了!该如何解决这个问题呢?我之前用Flask写了一个功能更完善的httpserver:

喜欢的朋友可以去看看这篇历史文章: https://www.jianshu.com/p/a5c4dca321f2
通过自己编码的方式实现了相关功能,但是能否想httpserver一样更快速的搭建一个文件共享服务器呢?此时,你应该想到ftp服务器!没错,ftp服务器不仅可以达到文件共享的大前提,还能通过设置用户名密码的方式来实现权限管理。用Python实现它麻烦么?不麻烦,也只需要一行代码!

Ftp服务器搭建

模块安装

python没有内置ftp模块,但要使用它却很简单,我们只需要简单的通过pip安装即可:
pip install pyftpdlib

简单共享

模块安装完成后,我们找到需要共享的目录,然后启动cmd后,输入:
python -m pyftpdlib -p 21
之后浏览器登陆ftp://ip:port,这样就开启了一个最简单的ftp共享服务。
首先我们使用浏览器登陆看下效果:

之后,我们在使用xftp工具登陆:

但此时,我们只是通过匿名用户anonymous,密码空的方式进行访问,只能使用ftp下载功能,而无法上传…

高级使用

简单的ftp搭建方式,肯定不满足我们的要求,那么我么就需要进行二次开发了!但也仅仅需要几行代码而已:

简单的ftp搭建方式,肯定不满足我们的要求,那么我么就需要进行二次开发了!但也仅仅需要几行代码而已:

  1. # -*- coding: utf- -*-
  2. # @Author : 王翔
  3. # @JianShu : 清风Python
  4. # @Date : // :
  5. # @Software : PyCharm
  6. # @version :Python 3.7.
  7. # @File : PythonFtp.py
  8.  
  9. from pyftpdlib.handlers import FTPHandler
  10. from pyftpdlib.servers import FTPServer
  11. from pyftpdlib.authorizers import DummyAuthorizer
  12.  
  13. authorizer = DummyAuthorizer()
  14. authorizer.add_user('python', '', 'F:\\Working~Study', perm='elradfmwM')
  15. handler = FTPHandler
  16. handler.authorizer = authorizer
  17.  
  18. server = FTPServer(('0.0.0.0', ), handler)
  19. server.serve_forever()

不管是windows还是linux服务器下,你还能想到比python搭建FTP服务器更简单的方式吗?哈哈…

The End

OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。
期待你关注我的公众号清风Python,如果觉得不错,希望能动动手指转发给你身边的朋友们。

作者:清风Python

HDC.Cloud 华为开发者大会2020 即将于2020年2月11日-12日在深圳举办,是一线开发者学习实践鲲鹏通用计算、昇腾AI计算、数据库、区块链、云原生、5G等ICT开放能力的最佳舞台。

欢迎报名参会

Python一秒搭建ftp服务器,帮助你在局域网共享文件【华为云技术分享】的更多相关文章

  1. Python一秒搭建ftp服务器,帮助你在局域网共享文件

    "老板 来碗面" "要啥面?" "内牛满面.." 最近项目上的事情弄得人心累,本来是帮着兄弟项目写套入口代码,搞着搞着就被拉着入坑了.搞开发 ...

  2. 这个七夕节,用Python为女友绘制一张爱心照片墙吧!【华为云技术分享】

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字“加群”,加入华为云线上技术讨论群:输入关键字“最新活动”,获取华为云最新特惠促销.华为云诸多技术大咖.特 ...

  3. Python爬虫实战之爬取糗事百科段子【华为云技术分享】

    首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...

  4. 不服跑个分:ARM鲲鹏云服务器实战评测——华为云鲲鹏KC1实例 vs. 阿里云G5实例【华为云技术分享】

    原文链接:https://m.ithome.com/html/444828.htm 今年一月份,华为正式发布了鲲鹏920数据中心高性能处理器,该处理器兼容ARM架构,采用7纳米制造,最高支持64核,主 ...

  5. 【华为云实战开发】9.如何进行PHP项目的快速搭建并实现CICD?【华为云技术分享】

    1 概述 1.1 文章目的 本文主要想为研发PHP项目的企业或个人提供上云指导,通过本文中的示例项目 “workerman-todpole”,为开发者提供包括项目管理,代码托管,代码检查,编译构建,测 ...

  6. 【华为云实战开发】8.如何快速搭建C#网站并实现持续集成?【华为云技术分享】

    1 概述 1.1 文章目的 本文通过一个实例介绍如何使用软件开发服务DevCloud完成一个C#Web项目的开发. 1.2 项目详情 1. 项目名称:超级冷笑话网站 2. 项目简介:一个Web网站,包 ...

  7. Python正则表达式,看完这篇文章就够了...#华为云·寻找黑马程序员#【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  8. Python开发GUI工具介绍,实战:将图片转化为素描画!【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  9. Python爬虫从入门到精通——基本库re的使用:正则表达式【华为云技术分享】

    置顶:华为云618大促火热进行中,全场1折起,免费抽主机,消费满额送P30 Pro,点此抢购. 正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索.替换.匹配验证都不在 ...

随机推荐

  1. [考试反思]0928csp-s模拟测试54:转瞬

    咕了好久,也没什么想说的. 下一场就又爆炸了... T3特判打丢一句话丢了14分,剩下其实都还好. T1:x 给我的第一感觉是建图找联通块,但既然只要找联通块为什么不直接并查集呢? 对于每一个数字合并 ...

  2. spring session源码解析

    模块划分 core部分代码 存储实现部分部分: jdbc实现 具体存储的实现类 例如:org.springframework.session.jdbc.JdbcOperationsSessionRep ...

  3. 程序员学点xx 之 Redis

    程序员学点xx 之 Redis 概述 其实程序员也要和操作系统打交道, 比如最常见的,部署自己电脑上的开发环境. 当然有时某些牛人, 觉得运维或基础部门的同事不够给力, 亲自上手部署服务器或线上环境, ...

  4. 如何在HTML中设置字体颜色,你知道这几种方式吗?

    color设置字体颜色 在color设置字体颜色之前,我们首先了解color在CSS中有几种取值方式,一共有4种方式,若有不全还请在评论区告知谢谢,4种方式如下: 十六进制.十进制. 英文单词.十六进 ...

  5. JavaScript闭包使用姿势指南

    目录 JavaScript闭包使用姿势指南 引言 闭包的定义 来个有趣的例子吧 现在我们换个例子吧 我们再来个有趣的例子 内存泄露问题 用闭包解决递归调用问题 用闭包模拟私有方法 在循环中使用闭包 性 ...

  6. java多线程与线程并发四:线程范围内的共享数据

    当多个线程操作同一个共有数据时,一个线程对共有数据的改变会影响到另一个线程.比如下面这个例子:两个线程调用同一个对象的的方法,一个线程的执行结果会影响另一个线程. package com.sky.th ...

  7. 深入理解计算机系统 第十章 系统级I/O

    很多高级语言都提供了执行 I/O 的较高级别的函数.为什么我们还要学习 Unix I/O? 原因:1.由于 I/O 和其他系统概念之间有循环依赖关系,故了解 Unix I/O 将帮助我们理解其他的系统 ...

  8. VMware安装Ubuntu 16.04.4 LTS

    1.下载Ubuntu镜像 https://www.ubuntu.com/download/desktop 2.创建新的虚拟机 3. 4.这里默认即可,可以不选 5. 6. 7.这里位置可以随时改 8. ...

  9. Python项目开发公用方法--excel生成方法

    在实际开发中,我们有时会遇到数据导出的需求.一般的,导出的文件格式为Excel形式. 那么,excel的生成就适合抽离出一个独立的公用方法来实现: def generate_excel(excel_n ...

  10. SpringBoot 源码解析 (六)----- Spring Boot的核心能力 - 内置Servlet容器源码分析(Tomcat)

    Spring Boot默认使用Tomcat作为嵌入式的Servlet容器,只要引入了spring-boot-start-web依赖,则默认是用Tomcat作为Servlet容器: <depend ...