遇到的问题
需要做一个程序给别人简单的分享文件,但是不是没个人的电脑都有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写小型的文件服务了。