遇到的問題
需要做一個程序給別人簡單的分享文件,但是不是沒個人的電腦都有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寫小型的文件服務了。