基于python3的http文件服务器

前言


跨环境或者跨跳板机传输文件很麻烦,比如从windows系统跨跳板机传输文件到linux系统,这时候scp就不适用了。

比较简单的方式是,从windows系统开一个http文件服务,然后从linux系统直接使用http链接下载。

如果是自己的环境,直接使用python3 -m http.server --bind 0.0.0.0 端口号 即可,但是如果给一个没有python环境
的windows系统使用,就需要把脚本编译成二进制文件。这里使用nuitka打包的方式。

正文


httpServer.py

import http.server
import socketserver
import argparse

def main():
    # 解析命令行参数,模拟原生http.server的参数
    parser = argparse.ArgumentParser(description='简易HTTP文件服务器')
    parser.add_argument('port', nargs='?', type=int, default=12123,
                        help='端口号 (默认: 12123)')
    parser.add_argument('--bind', '-b', default='0.0.0.0',
                        help='绑定的地址 (默认: 0.0.0.0)')
    args = parser.parse_args()

    # 配置服务器
    Handler = http.server.SimpleHTTPRequestHandler
    with socketserver.TCPServer((args.bind, args.port), Handler) as httpd:
        print(f"服务器运行在 http://{args.bind}:{args.port}/")
        print("按 Ctrl+C 停止服务器")
        try:
            httpd.serve_forever()
        except KeyboardInterrupt:
            print("\n服务器正在停止...")
            httpd.shutdown()
            print("服务器已停止")

if __name__ == '__main__':
    main()

打包
mkpkg.bat

python3 -m nuitka --onefile --output-dir=dist --enable-console .\httpServer.py

打包完成后,会在本地生成dist文件夹,其中有一个 httpServer.exe,双击运行
image

从浏览器访问:http://电脑ip:12123 , 可以看到 httpServer.exe 同目录的文件可以通过浏览器看到了
image

posted @ 2025-09-16 16:44  BrianSun  阅读(26)  评论(0)    收藏  举报