Этот веб-сервер на Python предоставляет приведенный ниже код с целью: когда пользователь нажимает кнопку «Включить», на моем рабочем столе будет создана папка с именем «Включить», точно так же, как и в случае с кнопкой «Выключить», вы спрашиваете меня, в чем смысл этого есть, и я вам отвечу, что это не имеет никакого смысла, но когда программа делает то, что нужно сделать, у кнопок появляются другие функции... Проблема в том, что программа выполняет только свою функцию когда имя файла имеет расширение .py , если я поставлю .pyw, это больше не работает, я никогда в жизни такого не видел, не знаю, почему это происходит...
import os
from http.server import BaseHTTPRequestHandler, HTTPServer
import urllib.parse
# Define o caminho do usuário
user_desktop_path = r"C:\Users\BRUNO-PC\Desktop"
# Define a porta do servidor
PORT = 8080
# Estado inicial
status = "Status: Aguardando ação..."
class RequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
global status
# Página HTML que será exibida
html = f"""
Controle de Máquina Virtual
body {{ font-family: Arial, sans-serif; }}
button {{ display: block; margin: 10px 0; padding: 10px; font-size: 16px; }}
#status {{ margin-top: 20px; font-weight: bold; }}
function enviarComando(comando) {{
fetch("/", {{
method: "POST",
headers: {{
"Content-Type": "application/x-www-form-urlencoded"
}},
body: "comando=" + comando
}}).then(response => response.text())
.then(data => {{
document.getElementById("status").innerText = data;
}}).catch(err => {{
console.error('Erro ao enviar o comando:', err);
}});
}}
Controle de Máquina Virtual
Ligar
Desligar
{status}
"""
# Retorna o HTML ao navegador
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write(html.encode("utf-8"))
print("Página HTML retornada.")
def do_POST(self):
global status
# Lê o comprimento dos dados enviados e decodifica
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length)
command = urllib.parse.parse_qs(post_data.decode('utf-8'))['comando'][0]
print(f"Comando recebido: {command}")
if command == "ligar":
# Cria a pasta Ligar e atualiza o status
os.makedirs(os.path.join(user_desktop_path, "Ligar"), exist_ok=True)
status = "Status: A máquina virtual está inicializando!"
elif command == "desligar":
# Cria a pasta Desligar e atualiza o status
os.makedirs(os.path.join(user_desktop_path, "Desligar"), exist_ok=True)
status = "Status: A máquina virtual está desligando!"
# Retorna o status atualizado ao navegador
self.send_response(200)
self.send_header("Content-type", "text/plain")
self.end_headers()
self.wfile.write(status.encode("utf-8"))
print(f"Status atualizado: {status}")
# Inicia o servidor
if __name__ == "__main__":
server = HTTPServer(("", PORT), RequestHandler)
print(f"Servidor rodando em http://localhost:{PORT} e http://1X2.X5.X5.X83:{PORT}")
server.serve_forever()
Подробнее здесь: https://stackoverflow.com/questions/791 ... n-i-use-py
Мой код работает только тогда, когда я использую расширение .py, и не работает, когда я использую .pyw. ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение