Dúvidas em Python

Iniciado por Kwezer, 06 de Junho de 2007, 12:00

tópico anterior - próximo tópico

Kwezer

Olá a todos, gostaria de saber como fazer para exibir o valor da variável ambiente $USER através do Python e como fazer para executar um comando como o apt-get, yum, emerge e etc também através do Python.
Agradeço desde já!

Kwezer

Consegui exibir o valor da variável $USER, porém ele mostra um 0 abaixo do valor.
Gostaria de saber se alguém sabe como solucionar isso.
O código ficou da seguinte maneira:

import os
USER = "echo $USER"
print os.system(USER)

Kwezer

Bom pessoal, consegui fazer PARCIALMENTE o que eu queria.
Através do código:

import os
a = os.system('echo $USER')


Consegui obter o valor da variável ambiente $USER.
O comando os.system consegue executar QUALQUER comando bash através do Python.
Mas o que eu realmente queria é definir uma variável com o valor da variável $USER.
Entenderam?
No caso do código acima era para não retornar nenhum valor, apenas quando eu desse um

print a

O problema é que o comando os.system identifica o ECHO e imprime o mesmo na tela.
Alguém saberia como resolver isso?
Agradeço desde já!

Darcamo

os.system('echo $USER') executa o comando "echo $USER", mas isso não quer dizer que ele retorna o valor da variável user. O que ele retorna é o código de retorno do comando. No caso do comando echo ele deve retornar 0 indicando que não houve nenhum erro.

Acho que o correto é usar a função os.getenv que serve justamente para pegar o valor de uma variável de ambiente.
Ex:
>>> a = os.getenv('PATH')
>>> print a
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
>>>

Para pegar o usuário, os.getenv('USER') funciona, mas acho que é melhor usar a função os.getlogin que tem justamente essa funcionalidade.


Dica off-topic: Instala o ipython que ele é um terminal python melhorado e tem alguns recursos bem interessantes. Incluindo TAB completion. Assim, digitando os.get <TAB> ele mostra
os.getcwd      os.getenv      os.getgroups   os.getpgid     os.getppid
os.getcwdu     os.geteuid     os.getloadavg  os.getpgrp     os.getsid
os.getegid     os.getgid      os.getlogin    os.getpid      os.getuid

e fica fácil descobrir qual função seria mais apropriada. Fora outras coisas muito úteis, como poder escrever
help os.getenv no lugar de help(os.getenv) (estilo Matlab).
Outra coisa muito útil nele é que ele entende vários comandos comuns do bash. Assim você pode usar 'cd', 'ls', 'pwd', etc.

Kwezer

Poxa amigo, muito obrigado pela dica, testei aqui e funcionou perfeitamente!
Obrigado pela indicação do programa ipython.
Vou utiliza-lo aqui.
Obrigado novamente!