
Ладно, я совершенно не понимаю, что, черт возьми, происходит в моей командной строке. Я просто пытаюсь создать скрипт, который минимизирует окно подсказки, открывает IP-адрес в браузере, а затем запускает простую команду HTTP-сервера через Python.
Мне приходится запускать команду HTTP-сервера ПОСЛЕ команды, start
потому что если я сначала запущу HTTP-сервер, то следующие команды НЕ ВЫПОЛНЯТСЯ.
Я даже установил несколько старых пользовательских .exe
программ, которые добавляли небольшие функции для исправления подобных проблем, но ни одна из них не работала правильно...
РЕДАКТИРОВАТЬ
На самом деле я понял, ""
что это было причиной того, что ссылка не открывалась, но сайт загружался ДО запуска HTTP-сервера. Так что мой НОВЫЙ вопрос: как мне запустить мою http.server
команду ДО start
команды, чтобы она не сработала (запуск любой команды после команды HTTP-сервера не сработает, поскольку все после нее никогда не выполняется).
ИЗМЕНИТЬ еще раз
Еще раз спасибо Anaksunaman за ответ, вот мой окончательный продукт для команды: (RunHTTPServer.bat):
@echo Off
start "" /min python -m http.server 8000 -b 127.0.0.1
sleep 1
start http://127.0.0.1:8000/
Я добавил --bind, чтобы привязать его к 127.0.0.1, так как иногда при использовании http.server и попытке подключения к Localhost:8000 выдается сообщение об ошибке подключения...
так что ИЛИ удалите -b/--bind и просто напишите свой ЛИЧНЫЙ адрес в этом начальном поле.
решение1
Вы можете использовать start
команду в обоих вызовах. Например, используя пакетный файл в Windows:
@echo Off
@rem Start two separate processes via the Windows "start" command.
@rem The second command to open the browser will not be blocked.
@rem start the Python HTTP server with a minimized command window ("/min").
start "" /min python -m http.server 8000 --bind 127.0.0.1
@rem Give the HTTP server a second to start (optional).
sleep 1
@rem Open Firefox to the Python HTTP server instance.
start "" firefox http://localhost:8000
Или вы можете использовать почти те же самые команды в Python сподпроцессмодуль:
#!/Programs/Python37/python
# Start two separate processes via the Windows "start" command.
# The second command to open the browser will not be blocked.
import sys
import subprocess
import time
# "/min" (below) minimizes the spawned command window (Windows).
try:
subprocess.run('cmd /c start "" /min python -m http.server 8000 --bind 127.0.0.1')
# subprocess.run('cmd /c start "" /min python http-server.py')
# Wait for our server to start (optional)
time.sleep(1)
# Open our browser
subprocess.run('cmd /c start firefox http://localhost:8000')
except Exception as err:
print('')
print(err)
sys.exit()
Кстати, как вы правильно отметили в комментариях ниже, вы можете опустить имя браузера (например, firefox
) в своей start
команде, чтобы просто открыть веб-сайт в браузере по умолчанию для Windows (например, start "" http://localhost:8000
или даже просто start http://localhost:8000
).