robotengine.help_server

 1import http.server
 2import socketserver
 3import webbrowser
 4import os
 5import socket
 6
 7def find_free_port():
 8    """找到一个空闲的端口"""
 9    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
10        s.bind(("", 0))  # 绑定到一个随机空闲端口
11        return s.getsockname()[1]  # 返回分配的端口
12
13def start_server(html_file=""):
14    abspath = os.path.abspath(html_file)
15    file_dir = os.path.dirname(abspath)
16    print("绝对路径:", abspath)
17    print(f"切换到目录:{file_dir}")
18    os.chdir(file_dir)
19
20    if not os.path.exists(abspath):
21        print(f"File not found: {abspath}")
22        return
23
24    port = find_free_port()
25
26    Handler = http.server.SimpleHTTPRequestHandler
27    with socketserver.TCPServer(("", port), Handler) as httpd:
28        print(f"Serving at http://localhost:{port}")
29
30        relative_file_url = os.path.relpath(abspath, file_dir).replace("\\", "/")
31
32        webbrowser.open(f'http://localhost:{port}/{relative_file_url}')
33
34        httpd.serve_forever()
def find_free_port():
 8def find_free_port():
 9    """找到一个空闲的端口"""
10    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
11        s.bind(("", 0))  # 绑定到一个随机空闲端口
12        return s.getsockname()[1]  # 返回分配的端口

找到一个空闲的端口

def start_server(html_file=''):
14def start_server(html_file=""):
15    abspath = os.path.abspath(html_file)
16    file_dir = os.path.dirname(abspath)
17    print("绝对路径:", abspath)
18    print(f"切换到目录:{file_dir}")
19    os.chdir(file_dir)
20
21    if not os.path.exists(abspath):
22        print(f"File not found: {abspath}")
23        return
24
25    port = find_free_port()
26
27    Handler = http.server.SimpleHTTPRequestHandler
28    with socketserver.TCPServer(("", port), Handler) as httpd:
29        print(f"Serving at http://localhost:{port}")
30
31        relative_file_url = os.path.relpath(abspath, file_dir).replace("\\", "/")
32
33        webbrowser.open(f'http://localhost:{port}/{relative_file_url}')
34
35        httpd.serve_forever()