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 str类型怎么转换(Python3中的bytes和str类型详解)
- 用python做一个表白视频(python仿抖音表白神器)
- python列表反转的方法(Python实现的列表排序、反转操作示例)
- python改变字体颜色指令(使用Python自动化破解自定义字体混淆信息的方法实例)
- python提取字符串中的正则表达式(python3正则提取字符串里的中文实例)
- python抓取贴吧标题和图片代码(Python实现的爬取百度贴吧图片功能完整示例)
- python的三维画图(python处理DICOM并计算三维模型体积)
- python字典的key(Python使用dict.fromkeys快速生成一个字典示例)
- pythonmatplotlib条形图动画(Python Matplotlib实现三维数据的散点图绘制)
- 怎么用python做随机矩阵(python实现杨氏矩阵查找)
- 100道python真实面试题附答案(值得收藏的10道python 面试题)
- python装饰器使用说明(详解Python装饰器)
- python排序方法简单(快速排序的四种python实现推荐)
- python常见知识点整理(Python基础知识点 初识Python.md)
- python识别验证码教程(Python3.5 + sklearn利用SVM自动识别字母验证码方法示例)
- python微信防封(深入学习微信网址链接解封的防封原理visit_type)
- 精英律师 廖佳敏封印恋情曝光,顾婕马失前蹄 你个老不死的(廖佳敏封印恋情曝光)
- 以家人之名广受好评,剧情生动引起观众共鸣,演员张新成圈粉无数(以家人之名广受好评)
- 三兄妹感情再遇波折,人设接连崩塌 《以家人之名》剧情猜不透(三兄妹感情再遇波折)
- 《小敏家》金波想要复婚 这只是他圈套的第1步,更可恶的在后面(小敏家金波想要复婚)
- 小敏家 剧情离谱一锅乱炖,但他们俩绝对是这部剧的一大 亮点(剧情离谱一锅乱炖)
- 《倚天屠龙记》再遭翻拍,关晓彤主演赵敏,蒋劲夫演张无忌,你怎么看(倚天屠龙记再遭翻拍)
热门推荐
- dedecms代码在哪里(dedecms 解决rss相对路径问题)
- MySQL批量执行SQL脚本文件
- mysql中如何设置多个主键(Mysql 增加主键或者修改主键的sql语句操作)
- 织梦网站导航下拉代码(适合企业站的织梦常用标签大全自己整理)
- 各种云服务器区别(日本云服务器有什么特性?好不好?)
- jquery中is()
- html5开发的app(浅谈Html5页面打开app的一些思考)
- docker容器技术搭建个人博客(使用Portainer部署Docker容器的项目实践)
- centosdocker镜像安装mysql(linux下利用Docker安装mysql的步骤)
- FileZilla Server搭建FTP服务器配置及425错误与TLS警告解决方法详解(FileZilla Server搭建FTP服务器配置及425错误与TLS警告解决方法详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9