[python-brasil] Como importar variáveis de um arquivo (source do shell)?

623 views
Skip to first unread message

Diego Giovane Pasqualin

unread,
Oct 31, 2007, 8:34:06 PM10/31/07
to python...@yahoogrupos.com.br
Boa noite.

Trabalho com shell script, criando pacotes .deb.
Nesses pacotes, costumo usar arquivos de configuração, que contém
variáveis vistas por vários outros scripts, exemplo:

------ variaveis.sh -------

ADDSU00="Usuario adicionado com sucesso"
ADDER00="Ocorreu um erro ao adicionar o usuário."
RMSU00="Usuário removido com sucesso"
...
------ variaveis.sh -------

Para importar essas variáveis nos scripts, basta rodar:
source variaveis.sh, ou ainda
. variaveis.sh

E já posso utilizá-las como se as tivesse definido no próprio script.

Minha dúvida é sobre qual a melhor maneira de fazer isso em python.
Pensei em algumas maneiras:

1° Crio um arquivo, variaveis.py, com o seguinte conteúdo:
class msg:
ADDSU00="Usuario adicionado com sucesso"
ADDER00="Ocorreu um erro ao adicionar o usuário."
RMSU00="Usuário removido com sucesso"

E referencio isso em meu outro script fazendo:
import variaveis
print variaveis.msg.ADDSU00

2° Crio o mesmo arquivo, porém com o seguinte conteúdo (desta maneira,
com muitas variáveis, a chance de erros será grande).
def msg(texto):
vars = [ "ADDSU00", "ADDER00" ]
conteudo = [ "Usuario adicionado com sucesso", "Ocorreu um erro ao
adicionar usuário." ]
idx = vars.index(texto)
print conteudo[idx]

3° Esta provavelmente estou confundindo o conceito, mas vi algo sobre
dicionários, definidos da seguinte forma (vejo essa como uma melhoria da
função do ítem 2).
def msg(texto):
dic = { "ADDSU00":"Usuário adicionado com sucesso",
"ADDER00":"Ocorreu um erro ao adicionar usuário." }
dic.get(texto)

Então, vocês recomendam/aperfeiçoam alguma forma dessas, ou sugerem
outra coisa melhor?



_______________________________________________________
Yahoo! Mail - Sempre a melhor opção para você!
Experimente já e veja as novidades.
http://br.yahoo.com/mailbeta/tudonovo/


,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/

<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html


Guilherme Polo

unread,
Oct 31, 2007, 9:13:34 PM10/31/07
to python...@yahoogrupos.com.br
Em 31/10/07, Diego Giovane Pasqualin <diegopa...@yahoo.com.br> escreveu:
O primeiro passo eh saber que voce esta usando Python agora.

Isso aqui:


ADDER00="Ocorreu um erro ao adicionar o usuário."

me parece mais um caso pra se jogar uma excecao do que somente mostrar a
mensagem.

Das opcoes que voce mostrou a segunda eh a pior de todas. Primeiro porque
voce usa duas listas de uma forma que praticamente representa um dicionario,
de forma bem pior. Na primeira opcao voce nao precisa criar uma classe, e na
terceira opcao acho que voce esqueceu de um return.

Talvez seria melhor voce so colocar as mensagens num arquivo de templates
(um modulo qualquer ai), importar elas e ai mostrar elas. Lembrando que
aquela segunda mensagem me parece um caso de se usar uma Exception.

--
-- Guilherme H. Polo Goncalves


[As partes desta mensagem que não continham texto foram removidas]

Leonardo Santagada

unread,
Oct 31, 2007, 9:13:08 PM10/31/07
to python...@yahoogrupos.com.br
On 10/31/07, Diego Giovane Pasqualin <diegopa...@yahoo.com.br> wrote:
> 1° Crio um arquivo, variaveis.py, com o seguinte conteúdo:
> class msg:
> ADDSU00="Usuario adicionado com sucesso"
> ADDER00="Ocorreu um erro ao adicionar o usuário."
> RMSU00="Usuário removido com sucesso"
>
> E referencio isso em meu outro script fazendo:
> import variaveis
> print variaveis.msg.ADDSU00
>
>
>
> 2° Crio o mesmo arquivo, porém com o seguinte conteúdo (desta maneira,
> com muitas variáveis, a chance de erros será grande).
> def msg(texto):
> vars = [ "ADDSU00", "ADDER00" ]
> conteudo = [ "Usuario adicionado com sucesso", "Ocorreu um erro ao
> adicionar usuário." ]
> idx = vars.index(texto)
> print conteudo[idx]
>
>
>
> 3° Esta provavelmente estou confundindo o conceito, mas vi algo sobre
> dicionários, definidos da seguinte forma (vejo essa como uma melhoria da
> função do ítem 2).
> def msg(texto):
> dic = { "ADDSU00":"Usuário adicionado com sucesso",
> "ADDER00":"Ocorreu um erro ao adicionar usuário." }
> dic.get(texto)

Pq não "from variaveis import *"? é a forma que fica praticamente a
mesma semantica do bash, mas importação de modulo não é a mesma coisa
que chamar um arquivo.... de uma olhada na documentação do python pra
ver as diferenças.

--
Leonardo Santagada (http://www.lomohomes.com/retype)

Não se preocupe com o que os outros vão fazer. O melhor jeito de
prever o futuro é inventa-lo.
- Alan Kay

Reply all
Reply to author
Forward
0 new messages