日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python实现文件共享_改进的一行Python实现文件共享--支持并发

發布時間:2025/4/5 python 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现文件共享_改进的一行Python实现文件共享--支持并发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SimpleHTTPServer是python自帶的一個簡單的靜態HTTP服務器, python2.x下只要切換到想要共享的目錄簡單地輸入下面的命令,就可以打開該HTTP服務器:

python -m SimpleHTTPServer [port]

其中,port是可選參數,用于指定使用的端口,默認使用的是8000端口。

在python3.x中,SimpleHTTPServer模塊被合并進了http.server模塊中,所以,python3.x中命令略有不同:

python3 -m http.server [port]

打開服務器之后,只需在任何局域網設備瀏覽器中輸入服務器ip:port就可以查看和下載服務器指定目錄的文件。如下圖所示:

圖1. 瀏覽器展示的文件目錄

這個文件服務器雖然簡單,但卻能充分利用局域網的帶寬,為公司、家庭和學校等場景省去了U盤拷貝文件的煩惱。

當然,正由于簡單它同樣存在著很多缺陷,很重要的一點就是其不支持并發, 即不能同時有多個主機訪問共享的目錄。為了解決這個問題,重寫這個模塊:

python2.x:

#!/usr/bin python#encoding: utf-8

importsocketimportBaseHTTPServerfrom SimpleHTTPServer importSimpleHTTPRequestHandler as SHRHfrom SocketServer importForkingTCPServer as FTSclassForkingHTTPServer(FTS):pass

def main(ServerHandlers = SHRH, ServerClass =ForkingHTTPServer):

BaseHTTPServer.test(ServerHandlers, ServerClass)if __name__ == '__main__':print("Host_address:[%s]" %socket.gethostbyname(socket.gethostname()))

main()

python3.x

#!/usr/local/bin python3#encoding: utf-8

importsocketfrom socketserver importForkingTCPServer as FTSimporthttp.serverfrom http.server importSimpleHTTPRequestHandler as SHRHclassForkHTTPServer(FTS):pass

def test(ServerHandler=SHRH, ServerClass=ForkHTTPServer):

http.server.test(ServerHandler, ServerClass)if __name__ == '__main__':

ip_address=socket.gethostbyname(socket.gethostname())print("Server address:[%s]" %ip_address)

test()

上面的代碼中ServerClass繼承自ForkingTCPServer類,這個類是socketserver模塊中ForkingMixIn和TCPServer的綜合,前者實現了使用分支的方法實現了HTTP服務器的并發功能。

將代碼保存為ForkHTTPServer.py, 然后將其移動至python的庫目錄下(我的python2.7為/usr/lib/python2.7;python3.4為/Library/Frameworks/Python.framework/Versions/3.4/lib),使用如下命令就可以啟動并發版的簡易靜態文件服務器了:)

[python2.7]

python -m ForkHTTPServer [port]

[python3.4]

python3 -m ForkHTTPServer [port]

這個命令還是太麻煩,對于Linux或Mac用戶可以更進一步,為該命令取別名:

vim ~/.bashrc

添加:

[python2.7]

alias share="python -m /usr/lib/python2.7/ForkStaticServer"

[python3.4]

alias share="python3 -m /Library/Frameworks/Python.framework/Versions/3.4/lib/ForkStaticServer"

這樣,只要在終端中輸入“share”命令就可以開去文件服務器了,很方便是吧:-D

總結

以上是生活随笔為你收集整理的python实现文件共享_改进的一行Python实现文件共享--支持并发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。