DEV Community

Cover image for Automações com Python.
Henrique Vital
Henrique Vital

Posted on

Automações com Python.

Este código é projetado para executar programas Python em novos terminais separados, de forma assíncrona. Vou explicar passo a passo o que cada parte do código faz.

1. Importação do Módulo subprocess

import subprocess
Enter fullscreen mode Exit fullscreen mode

O módulo subprocess permite criar e gerenciar processos do sistema operacional a partir de um programa Python. É usado aqui para iniciar os programas Python em novas janelas de terminal.

2. Função executar_programa

def executar_programa(caminho_programa):
    try:
        # Executa o programa em uma nova janela de terminal
        subprocess.Popen(
            ["python", caminho_programa],
            creationflags=subprocess.CREATE_NEW_CONSOLE
        )
        print(f"Programa {caminho_programa} iniciado com sucesso.")
    except Exception as e:
        print(f"Erro ao iniciar o programa {caminho_programa}: {e}")
Enter fullscreen mode Exit fullscreen mode

Esta função é responsável por executar um programa Python em uma nova janela de terminal:

  • Argumento caminho_programa: O caminho absoluto do script Python que você deseja executar.

  • subprocess.Popen: Inicia um novo processo no sistema operacional.

    • A lista ["python", caminho_programa] é o comando que será executado no terminal. O primeiro item "python" é o interpretador Python e o segundo item caminho_programa é o script Python a ser executado.
    • creationflags=subprocess.CREATE_NEW_CONSOLE: Essa flag cria uma nova janela de terminal para o processo em vez de rodá-lo na janela de terminal atual.
  • try e except: O bloco try tenta executar o programa. Se ocorrer algum erro (como o caminho incorreto do script), o bloco except captura a exceção e imprime uma mensagem de erro.

3. Função main

def main():
    # Caminhos para os programas que você deseja executar
    programa1 = r"C:\Users\hbvbr\Documents\DEV\AlgotradingCopia\eaEquiti\eaEquiti108.py"
    programa2 = r"C:\Users\hbvbr\Documents\DEV\AlgotradingCopia\eaEquiti690\eaEquiti690.py"
    programa3 = r"C:\Users\hbvbr\Documents\DEV\AlgotradingCopia\eaFtmo\eaFtmo.py"
    programa4 = r"C:\Users\hbvbr\Documents\DEV\AlgotradingCopia\eaEquiti224\eaEquiti224.py"

    # Executa cada programa em um terminal separado
    executar_programa(programa1)
    executar_programa(programa2)
    executar_programa(programa3)
    executar_programa(programa4)
Enter fullscreen mode Exit fullscreen mode

Na função main:

  • Definição de caminhos para os programas: Aqui, quatro variáveis são definidas (programa1, programa2, programa3, programa4) com os caminhos absolutos dos scripts Python que você deseja executar. Os caminhos são escritos como strings brutas (prefixados com r) para evitar problemas com barras invertidas.

  • Chamada à função executar_programa: Para cada programa, a função executar_programa é chamada. Cada script Python é executado em uma nova janela de terminal.

4. Execução Condicional if __name__ == "__main__":

if __name__ == "__main__":
    main()
Enter fullscreen mode Exit fullscreen mode
  • if __name__ == "__main__":: Essa condição verifica se o arquivo Python está sendo executado diretamente (e não importado como módulo em outro script). Se for executado diretamente, a função main() será chamada e os programas serão iniciados.

Resumo do Fluxo:

  1. O script começa executando a função main.
  2. A função main chama executar_programa para cada um dos quatro scripts, passando os caminhos dos programas.
  3. A função executar_programa executa cada script Python em uma nova janela de terminal, usando subprocess.Popen.
  4. Se houver algum erro ao tentar executar qualquer programa, o erro será capturado e uma mensagem será exibida.

Como funciona no sistema operacional:

  • O subprocess.Popen com CREATE_NEW_CONSOLE vai abrir uma nova janela do terminal do sistema operacional (no Windows, geralmente o cmd ou PowerShell) e executar o programa Python especificado em cada uma dessas janelas.

Esse é o funcionamento básico do código! Se precisar de mais detalhes ou ajustes, fique à vontade para perguntar.

Top comments (0)