|
Python - Gerando Variáveis Dinâmicas entre Scripts | |
| @CanalQb | ||
Em projetos Python que envolvem múltiplos scripts, pode ser necessário passar dados entre eles e criar variáveis dinamicamente com base nesses dados. Neste exemplo, explicamos como um script pode chamar outro, passando argumentos, e como o segundo script pode gerar variáveis globais com nomes definidos a partir desses argumentos.
Funcionamento básico
O script script1.py chama o script2.py usando a biblioteca subprocess e envia um texto como argumento. O script2.py captura esse argumento via sys.argv e cria uma variável global com o nome recebido e valor definido.
Exemplo do script1.py
import subprocess
nome_script2 = 'script2.py'
texto = 'texto_ja_definido'
subprocess.call(['python', nome_script2, texto])
Exemplo do script2.py
import os
import sys
# Obtém o nome do script que chamou este script
nome_script1 = os.path.basename(sys.argv[0])
# Obtém o argumento passado pelo script1.py
texto = sys.argv[1]
# Cria uma variável global com nome igual ao argumento e um valor definido
globals()[texto] = "Valor da variável"
# Exibe os resultados
print(f"Nome do script chamador: {nome_script1}")
print(f"Nome da variável criada: {texto}")
print(f"Valor da variável: {globals()[texto]}")
Explicações importantes
- globals(): Função que retorna um dicionário representando o namespace global atual, permitindo criar variáveis dinamicamente.
- sys.argv: Lista que contém os argumentos da linha de comando.
sys.argv[0]é o nome do script atual, e os seguintes índices são os argumentos passados. - os.path.basename: Utilizado para extrair apenas o nome do arquivo do caminho completo.
- subprocess.call: Permite executar outros scripts Python ou comandos externos, passando argumentos facilmente.
Boas práticas e cuidados
Embora seja possível criar variáveis dinamicamente com globals(), essa prática deve ser usada com cuidado, pois pode dificultar a manutenção e legibilidade do código. Em geral, é preferível usar dicionários para armazenar valores dinâmicos.
Além disso, sempre valide os argumentos recebidos para evitar erros inesperados:
if len(sys.argv) < 2:
print("Uso correto: python script2.py nome_variavel")
sys.exit(1)
Referências oficiais para aprofundamento
Conclusão
Passar dados entre scripts Python é simples usando o módulo subprocess e argumentos de linha de comando. A criação dinâmica de variáveis com globals() deve ser usada com atenção e, preferencialmente, substituída por estruturas de dados como dicionários para garantir clareza e segurança do código.

Comentários
Comente só assim vamos crescer juntos!