Когда я запускаю локальный хост-сервер для просмотра моих html-файлов, я обычно использую приглашение командной строки:
python -m http.server 8000
Однако я хочу сделать это из файла .py, и я изо всех сил.
В идеале при запуске py-файла он должен запускать сервер, открывать localhost в веб-браузере по умолчанию, а затем оставаться открытым, пока пользователь не введет ключевое слово, например «exit». В соответствии с документацией http.server мой текущий код выглядит так:
import http.server
import socketserver
import webbrowser
PORT = 8000
URL = f'localhost:{PORT}/MapViz.html'
def run():
Handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("Enjoy your visualization!")
httpd.serve_forever()
if __name__ == "__main__":
run()
webbrowser.open_new(URL)
Я знаю, что на данный момент ему нечего закрывать сервер после того, как пользователь закончил, но я просто пытаюсь заставить его сначала открыть браузер. Кажется, что serve_forever()
не подходит для работы, но я не уверен, что это такое.
Кроме того, мне нужно беспокоиться о закрытии сокета? Я всегда был в состоянии использовать формат with open(x) as file:
для файлов, чтобы не беспокоиться о закрытии их, но у меня была проблема, когда я возился с этим, когда я получил ошибку Windows 10048, сообщающую, что сокет все еще используется, так что, возможно, это также не закрывается правильно.
Спасибо!