Como um script Python pode capturar a variável de outro script
Descrição do problema
Uma tarefa comum em projetos Python é a necessidade de um script obter informações de outro, especialmente quando esses scripts fazem parte de processos automatizados. Um dos métodos mais práticos para alcançar isso é utilizar o módulo subprocess, que permite executar outro script e capturar sua saída.
Exemplo prático: dois scripts Python se comunicando
Vamos demonstrar como um script Python pode capturar o valor de uma variável definida em outro script.
Segundo script (segundo_script.py)
Este é o script que contém a variável que desejamos acessar:
# segundo_script.py
print("hello world")
Note que usamos print() para garantir que a variável seja passada pela saída padrão e possa ser capturada.
Primeiro script (primeiro_script.py)
Este script executa o segundo script e lê sua saída:
import subprocess
# Executa o segundo script e captura a saída
process = subprocess.Popen(['python', 'segundo_script.py'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = process.communicate()
# Remove espaços em branco e converte para string
minha_variavel = output.decode('utf-8').strip()
# Exibe a variável capturada
print(minha_variavel)
Explicação do processo
- subprocess.Popen: executa o script indicado.
- stdout=subprocess.PIPE: direciona a saída padrão para uma variável.
- communicate(): coleta o resultado do script filho.
- decode('utf-8'): converte os bytes recebidos em string legível.
Cuidados importantes
Certifique-se de que o segundo script imprima apenas a variável que você deseja capturar. Qualquer texto adicional impresso também será incluído na saída e pode comprometer o valor capturado.
Alternativas avançadas
Se o segundo script for mais complexo ou retornar múltiplos dados, considere utilizar comunicação via arquivos temporários, sockets ou mesmo módulos personalizados. Para estruturas mais robustas, é possível usar multiprocessing com filas (Queue) ou processos compartilhados.
Exemplo completo e funcional
Ambos os arquivos devem estar no mesmo diretório. Execute primeiro_script.py e você verá a saída:
hello world

Comentários
Comente só assim vamos crescer juntos!