python在使用 http.server 做文件服務時自定義文件路徑


遇到的問題

需要做一個程序給別人簡單的分享文件,但是不是沒個人的電腦都有python環境所以放棄了命令行使用http.server 默認的路徑時運行時所在的環境

python -m http.server 8080 -d /home

然后找到下面這種方式准備打包成exe給別人使用,但是又遇到個問題,他每次默認的都是自己的運行目錄,沒有辦法自己選定路徑

from http.server import HTTPServer, SimpleHTTPRequestHandler


if __name__ == '__main__':
    ip = ''
    port = 8888
    server = HTTPServer((ip, port), SimpleHTTPRequestHandler)
    server.serve_forever()

解決方法

最后找個一個方法使用python中的functools中的partial模塊,
functools模塊中partial的使用
這個模塊的意思:
返回一個新的部分對象,當被調用時,其行為類似於使用位置參數_args_ 和關鍵字參數_關鍵字_調用的_func_。如果為調用提供了更多參數,則將它們附加到_args_。如果提供了其他關鍵字參數,則它們會擴展和覆蓋_關鍵字_。
簡單來說就是 讓這個新的對象 默認就具有你給的參數,只要不去覆蓋的話

from functools import partial  # 導入模塊
from http.server import HTTPServer, SimpleHTTPRequestHandler


if __name__ == '__main__':
    ip = ''
    port = 8888
    # 指定directroy 的路徑 ,返回給Handler這個對象,在去調用這個對象
    Handler = partial(SimpleHTTPRequestHandler, directory='/Users/yibai/Downloads')
    server = HTTPServer((ip, port), Handler)
    server.serve_forever()

最后就可以寫pyqt寫小型的文件服務了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM