使用Python創(chuàng)建簡(jiǎn)單的HTTP服務(wù)器的方法步驟
如果需要一個(gè)簡(jiǎn)單的Web Server,而不是安裝那些復(fù)雜的HTTP服務(wù)程序,比如:Apache,Nginx等。那么可以使用Python自帶的包完成一個(gè)簡(jiǎn)單的內(nèi)建 HTTP 服務(wù)器。于是,你可以把你的目錄和文件都以HTTP的方式展示出來(lái)。
基本命令
python -m Web服務(wù)器模塊 [端口號(hào),默認(rèn)8000]
這里的“Web服務(wù)器模塊”有如下三種:
BaseHTTPServer: 提供基本的Web服務(wù)和處理器類(lèi),分別是HTTPServer和BaseHTTPRequestHandler。
SimpleHTTPServer: 包含執(zhí)行GET和HEAD請(qǐng)求的SimpleHTTPRequestHandler類(lèi)。
CGIHTTPServer: 包含處理POST請(qǐng)求和執(zhí)行CGIHTTPRequestHandler類(lèi)。
啟動(dòng)web服務(wù)器
對(duì)于Python2,簡(jiǎn)單搭建Web服務(wù)器,只需在需要搭建Web服務(wù)器的目錄(如 /home/pythontab/)下,輸入如下命令:
python -m SimpleHTTPServer 8080
使用 8080端口的創(chuàng)建Web服務(wù)器
對(duì)于Python3,其創(chuàng)建Web服務(wù)器的等價(jià)命令,如下:
python3 -m http.server 8080
瀏覽web頁(yè)面
可以在瀏覽器中輸入 http://127.0.0.1:8080 或 將 http://localhost:8080進(jìn)行訪(fǎng)問(wèn)。其他機(jī)器也可以通過(guò)服務(wù)器的IP地址來(lái)訪(fǎng)問(wèn)服務(wù)器資源。
如果當(dāng)前文件夾有index.html文件,會(huì)默認(rèn)顯示該文件,否則,會(huì)以文件列表的形式顯示目錄下所有文件。這樣已經(jīng)實(shí)現(xiàn)了最基本的文件分享的目的,你可以做成一個(gè)腳本,再建立一個(gè)快捷方式,就可以很方便的啟動(dòng)文件分享了。如果有更多需求,完全可以根據(jù)自己需要定制,具體的請(qǐng)參見(jiàn)官方文檔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服務(wù)器
看到這里,默認(rèn)你已經(jīng)安裝了Python,不過(guò)你還需要安裝另外一個(gè)好用的工具。你知道,當(dāng)需要找Chrome插件的時(shí)候,會(huì)去Google的WebStore;當(dāng)需要找Firefox應(yīng)用的時(shí)候,會(huì)去Mozilla的Add-ons;當(dāng)你需要找Python組件的時(shí)候,你需要pip:A tool for installing and managing Python packages,安裝方法就不介紹了。
Python沒(méi)有內(nèi)置一個(gè)直接可以用的FTP服務(wù)器,所以需要第三方組件的支持,我找到的這個(gè)組件叫pyftpdlib,首先安裝:
pip install pyftpdlib
安裝完后,和HTTP服器類(lèi)似,執(zhí)行以下命令就可以啟動(dòng)一個(gè)FTP服務(wù)器了:
python -m pyftpdlib -p 21
后面的21端口依然是可選的,不填會(huì)隨機(jī)一個(gè),被占用的端口將跳過(guò)。在瀏覽器敲入本機(jī)地址:
ftp://localhost:21
這時(shí)候,是匿名訪(fǎng)問(wèn),也就是用戶(hù)名是anonymous,密碼為空,如果想要控制訪(fǎng)問(wèn)權(quán)限,你需要自己定制服務(wù)器,具體的可以參看pyftpdlib Tutorial,我這里拷貝過(guò)來(lái)一段作為介紹:
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()
只看代碼應(yīng)該基本知道該怎么用了,add_user顯然是添加用戶(hù),2121是指定端口,當(dāng)然也可以隨機(jī),還有最大連接數(shù)max_cons,每個(gè)ip最大連接限制,更多的接口建議直接看docstrings。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python3搭建http服務(wù)器的實(shí)現(xiàn)代碼
- 淺析使用Python搭建http服務(wù)器
- Python代碼實(shí)現(xiàn)http/https代理服務(wù)器的腳本
- 使用 Python 快速實(shí)現(xiàn) HTTP 和 FTP 服務(wù)器的方法
- python 使用poster模塊進(jìn)行http方式的文件傳輸?shù)椒?wù)器的方法
- 用Python一鍵搭建Http服務(wù)器的方法
- python 請(qǐng)求服務(wù)器的實(shí)現(xiàn)代碼(http請(qǐng)求和https請(qǐng)求)
- Python如何實(shí)現(xiàn) HTTP echo 服務(wù)器
相關(guān)文章
python中數(shù)組和列表的簡(jiǎn)單實(shí)例
,Python數(shù)據(jù)類(lèi)型分為很多種,其中包括元組、字典、列表等,下面這篇文章主要給大家介紹了python中數(shù)組和列表使用的相關(guān)資料,以及python列表和Numpy數(shù)組的區(qū)別,需要的朋友可以參考下2022-03-03
tensorflow識(shí)別自己手寫(xiě)數(shù)字
這篇文章主要為大家詳細(xì)介紹了tensorflow識(shí)別自己手寫(xiě)數(shù)字,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
matlab中imadjust函數(shù)的作用及應(yīng)用舉例
這篇文章主要介紹了matlab中imadjust函數(shù)的作用及應(yīng)用舉例,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
使用Rasterio讀取柵格數(shù)據(jù)的實(shí)例講解
今天小編就為大家分享一篇使用Rasterio讀取柵格數(shù)據(jù)的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
Python爬蟲(chóng)實(shí)現(xiàn)vip電影下載的示例代碼
這篇文章主要介紹了Python爬蟲(chóng)實(shí)現(xiàn)vip電影下載的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Python使用Appium在移動(dòng)端抓取微博數(shù)據(jù)的實(shí)現(xiàn)
Appium是移動(dòng)端的自動(dòng)化測(cè)試工具,讀者可以類(lèi)比為PC端的selenium。通過(guò)它,我們可以驅(qū)動(dòng)App完成自動(dòng)化的一系列操作,同樣也可以爬取需要的內(nèi)容,本文就來(lái)介紹一下如何在移動(dòng)端抓取微博數(shù)據(jù),感興趣的可以了解一下2021-08-08
Python接口開(kāi)發(fā)實(shí)現(xiàn)步驟詳解
這篇文章主要介紹了Python接口開(kāi)發(fā)實(shí)現(xiàn)步驟詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04

