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