Unix é um sistema operacional que foi desenvolvido por volta de 1969 no AT&T Bell Labs por Ken Thompson e Dennis Ritchie. Existem muitos comandos Unix interessantes que podemos usar para realizar diferentes tarefas. A questão é: podemos usar esses comandos diretamente em um programa Python? É isso que vou mostrar neste tutorial.
O comando Unix ls lista todos os arquivos no diretório. Se você colocar ls como está em um script Python, isso é o que você obterá quando executar o programa:
Traceback (most recent call last): File "test.py", line 1, inls NameError: name 'ls' is not defined
Isso mostra que o interpretador Python está tratando ls como uma variável e requer que ela seja definida (ou seja, inicializada), e não a tratou como um comando Unix.
os.system()
Uma solução para esse problema é usar os.system() do Python os módulo.
Conforme mencionado na documentação, os.system():
Executa o comando (uma string) em um subshell. Isso é implementado chamando a função padrão C system() e tem as mesmas limitações.
Assim, podemos executar o ls comando em Python da seguinte forma:
import os
os.system('ls')
Isso retornará a lista de arquivos em seu diretório atual, que é onde seu .py programa está localizado.
Vamos dar outro exemplo. Se você deseja retornar a data e hora atuais, você pode usar o comando Unix date do seguinte modo:
import os
os.system('date')
No meu caso, isso foi o que obtive como resultado do script acima:
Tue May 24 17:29:20 CEST 2016
ligar()
Embora os.system() funciona, não é recomendado, pois é considerado um pouco antigo e obsoleto. Uma solução mais recomendada é a do Python subprocess módulo call(args) função. Conforme mencionado na documentação sobre esta função:
Execute o comando descrito por args. Aguarde a conclusão do comando e, em seguida, retorne o atributo returncode.
Se quisermos executar o ls Comando Unix usando este método, podemos fazer o seguinte:
from subprocess import call
call('ls')
Vamos ver como podemos retornar a data usando o subprocess módulo, mas vamos tornar o exemplo mais interessante.
import subprocess
time = subprocess.Popen('date', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = time.communicate()
print 'It is', output
O exemplo acima pode ser executado de forma mais simples usando check_output()do seguinte modo:
import subprocess
time = subprocess.check_output('date')
print 'It is', time
A saída dos scripts acima é:
It is Tue May 24 19:14:22 CEST 2016
Os exemplos acima mostram a flexibilidade no uso de diferentes subprocess funções, e como podemos passar os resultados para variáveis para realizar outras operações.
Conclusão
Como vimos neste tutorial, comandos Unix podem ser chamados e executados usando o subprocess módulo, que oferece muita flexibilidade ao trabalhar com comandos Unix através de suas diferentes funções. Você pode aprender mais sobre este módulo e suas diferentes funções na documentação do Python.
[ad_2]