pythonhttp文件服务器(使用Python创建简单的HTTP服务器的方法步骤)
pythonhttp文件服务器
使用Python创建简单的HTTP服务器的方法步骤如果需要一个简单的Web Server,而不是安装那些复杂的HTTP服务程序,比如:Apache,Nginx等。那么可以使用Python自带的包完成一个简单的内建 HTTP 服务器。于是,你可以把你的目录和文件都以HTTP的方式展示出来。
基本命令
python -m Web服务器模块 [端口号,默认8000]
这里的“Web服务器模块”有如下三种:
BaseHTTPServer: 提供基本的Web服务和处理器类,分别是HTTPServer和BaseHTTPRequestHandler。
SimpleHTTPServer: 包含执行GET和HEAD请求的SimpleHTTPRequestHandler类。
CGIHTTPServer: 包含处理POST请求和执行CGIHTTPRequestHandler类。
启动web服务器
对于Python2,简单搭建Web服务器,只需在需要搭建Web服务器的目录(如 /home/pythontab/)下,输入如下命令:
python -m SimpleHTTPServer 8080
使用 8080端口的创建Web服务器
对于Python3,其创建Web服务器的等价命令,如下:
|
python3 - m http.server 8080 |
浏览web页面
可以在浏览器中输入 http://127.0.0.1:8080 或 将 http://localhost:8080进行访问。其他机器也可以通过服务器的IP地址来访问服务器资源。
如果当前文件夹有index.html文件,会默认显示该文件,否则,会以文件列表的形式显示目录下所有文件。这样已经实现了最基本的文件分享的目的,你可以做成一个脚本,再建立一个快捷方式,就可以很方便的启动文件分享了。如果有更多需求,完全可以根据自己需要定制,具体的请参见官方文档SimpleHTTPServer,或者直接看源码。我拷贝一段,方便参考:
|
import SimpleHTTPServer import SocketServer PORT = 8000 Handler = SimpleHTTPServer.SimpleHTTPRequestHandler httpd = SocketServer.TCPServer(("", PORT), Handler) print "serving at port" , PORT httpd.serve_forever() |
Python版FTP服务器
看到这里,默认你已经安装了Python,不过你还需要安装另外一个好用的工具。你知道,当需要找Chrome插件的时候,会去Google的WebStore;当需要找Firefox应用的时候,会去Mozilla的Add-ons;当你需要找Python组件的时候,你需要pip:A tool for installing and managing Python packages,安装方法就不介绍了。
Python没有内置一个直接可以用的FTP服务器,所以需要第三方组件的支持,我找到的这个组件叫pyftpdlib,首先安装:
|
pip install pyftpdlib |
安装完后,和HTTP服器类似,执行以下命令就可以启动一个FTP服务器了:
|
python - m pyftpdlib - p 21 |
后面的21端口依然是可选的,不填会随机一个,被占用的端口将跳过。在浏览器敲入本机地址:
ftp://localhost:21
这时候,是匿名访问,也就是用户名是anonymous,密码为空,如果想要控制访问权限,你需要自己定制服务器,具体的可以参看pyftpdlib Tutorial,我这里拷贝过来一段作为介绍:
|
from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler from pyftpdlib.servers import FTPServer def main(): # Instantiate a dummy authorizer for managing 'virtual' users authorizer = DummyAuthorizer() # Define a new user having full r/w permissions and a read-only # anonymous user authorizer.add_user( 'user' , '12345' , '.' , perm = 'elradfmwM' ) authorizer.add_anonymous(os.getcwd()) # Instantiate FTP handler class handler = FTPHandler handler.authorizer = authorizer # Define a customized banner (string returned when client connects) handler.banner = "pyftpdlib based ftpd ready." # Specify a masquerade address and the range of ports to use for # passive connections. Decomment in case you're behind a NAT. #handler.masquerade_address = '151.25.42.11' #handler.passive_ports = range(60000, 65535) # Instantiate FTP server class and listen on 0.0.0.0:2121 address = ('', 2121 ) server = FTPServer(address, handler) # set a limit for connections server.max_cons = 256 server.max_cons_per_ip = 5 # start ftp server server.serve_forever() if __name__ = = '__main__' : main() |
只看代码应该基本知道该怎么用了,add_user显然是添加用户,2121是指定端口,当然也可以随机,还有最大连接数max_cons,每个ip最大连接限制,更多的接口建议直接看docstrings。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://www.pythontab.com/html/2018/pythonhexinbiancheng_0907/1346.html
- python响应处理post请求(Python3模拟curl发送post请求操作示例)
- python菜单栏中常用的菜单(Python3实现的简单三级菜单功能示例)
- python列表反转的方法(Python实现的列表排序、反转操作示例)
- python实现栈和队列(Python利用heapq实现一个优先级队列的方法)
- python排序方法简单(快速排序的四种python实现推荐)
- python获取网络数据tcp(Python选择网卡发包及接收数据包)
- python高德地图可视化(利用python和百度地图API实现数据地图标注的方法)
- python中比较同一字典value(在Python 字典中一键对应多个值的实例)
- python中list怎么用(详解python中list的使用)
- python 调钉钉接口(python3实现钉钉消息推送的方法示例)
- 学python可以应用到哪些方面(学习python可以干什么)
- pythonhash使用(详解python中的hashlib模块的使用)
- python集合类(Python数据类型之Set集合实例详解)
- pythonselenium接口自动测试(python3+selenium自动化测试框架详解)
- python中test函数用法(Python TestCase中的断言方法介绍)
- pythondatetime库详解(python使用time、datetime返回工作日列表实例代码)
- 《极限挑战》深访都市夜归人,夜间打工者体验,黄磊录完憔悴了(极限挑战深访都市夜归人)
- Google 推出了一个游戏生成器,让不会编程的你也能自己设计游戏(推出了一个游戏生成器)
- 二胎家庭老大爱闹情绪,用这招很有效(二胎家庭老大爱闹情绪)
- 一个30岁男人外遇失败的全过程(一个30岁男人外遇失败的全过程)
- 《无敌破坏王2》 不聊彩蛋,聊聊我从动画里看到的现实那些事儿(无敌破坏王2不聊彩蛋)
- 《寄生虫》 三观不正 人类悲欢从来不相通,感同身受也并非本能(寄生虫三观不正)
热门推荐
- pythonopencv自定义阈值算法(理想高通滤波实现Python opencv示例)
- 参加笔试前需要做哪些准备
- flask项目微信小程序(Python Flask 搭建微信小程序后台详解)
- VS中使用Unit Test Generator进行单元测试
- mysql索引失效的几种情况(Mysql 5.6 "隐式转换"导致的索引失效和数据不准确的问题)
- laravel5开发规范(laravel5.1框架基础之路由详解)
- 如何安装phpmysql环境(phpnow重新安装mysql数据库的方法)
- nginxtomcat工作原理(Windwos下实现Nginx+Tomcat集群过程解析)
- 微信小程序获取手机信息(微信小程序获取手机号的踩坑记录)
- SQL SERVER数据库状态
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9