Мой код работает только тогда, когда я использую расширение .py, и не работает, когда я использую .pyw.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Мой код работает только тогда, когда я использую расширение .py, и не работает, когда я использую .pyw.

Сообщение Anonymous »

Этот веб-сервер на 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»