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.
Originally posted 2022-07-13 17:21:11.