Python – Como chamar um comando externo?

Muitas vezes é necessário que o Python interaja com o sistema operacional do computador onde ele está sendo executado. Por exemplo, para ter informações sobre as partições do disco rígido. Para que isso aconteça, é necessário criar um comando externo, que invoca a informação ou programa que se deseja, diretamente do SO.

Neste post vamos mostrar um módulo do Python que permite que processos sejam criados, e estes executam programas externos ao código Python que está sendo escrito. Ele também permite que a saída deste programa na tela seja executada como se estivesse num shell normal. Este é o módulo subprocess, que oferece várias opções para executar programas. Vamos mostrar aqui duas delas:

Python – A opção call()

import subprocess
r = subprocess.call("echo Hello World", shell=True)

Esta opção nos mostra na tela as informações que o programa externo gerou, mas não como uma entrada que possa ser manipulada posteriormente pelo nosso programa em Python. O valor que a função call() retorna dentro do programa em Python é somente o status da execução do programa externo.

Para podermos manipular os dados deste programa externo, devemos utilizar a função  check_output(). Um exemplo utilizando esta função no lugar de call() é mostrado abaixo:

subprocess.check_output(['java -Djava.library.path="C:UsersAdministratorDocumentsNetBeansProjects
SDK_Java_‌v1.0.0.2_BetaSDK Java_v1.0.0.2 BETALib" -jar C:UsersAdministratorDocumentsNetBeansProjects
Busca3-N_javadistBusca3-N_ja‌va.jar',arquivo])
return r

Este exemplo é a chamada de um programa em Java, cujas informações serão manipuladas depois em Python, sendo fornecidos pelo return.

Python – A opção Popen ()

import subprocess
proc = subprocess.Popen ("echo Hello World", shell=True,
stdout=subprocess.PIPE).stdout.read()

Ele oferece bastante flexibilidade para que os desenvolvedores sejam capazes de lidar com casos mais complexos que não são cobertos pelas funções mais simples. O subprocess.Popen() executa um programa filho num novo processo. No Unix, tem um comportamento semelhante ao os.execvp()- na execução deste programa. Já no Windows, usa a função CreateProcess().

Estas são algumas das formas de se chamar um comando externo no Python. Conhece mais alguma? Compartilhe conosco na área de comentários abaixo!

Caso queria procurar mais dicas, pesquise nossos vídeos sobre Python. Abaixo estão alguns exemplos:

Aerolith.org – (parte 1) 

URL Shortener

Também pode seguir alguns de nossos broadcasters que programam em Python, como os abaixo:

writkas

 

 

 jakeinmn

 

 

Outra maneira legal de descobrir mais coisas interessantes sobre Python é acessar nossa página de projetos

Dr. Michael J. Garbade

I, Dr. Michael J. Garbade is the co-founder of the Education Ecosystem (aka LiveEdu), ex-Amazon, GE, Rebate Networks, Y-combinator. Python, Django, and DevOps Engineer. Serial Entrepreneur. Experienced in raising venture funding. I speak English and German as mother tongues. I have a Masters in Business Administration and Physics, and a Ph.D. in Venture Capital Financing. Currently, I am the Project Lead on the community project -Nationalcoronalvirus Hotline I write subject matter expert technical and business articles in leading blogs like Opensource.com, Dzone.com, Cybrary, Businessinsider, Entrepreneur.com, TechinAsia, Coindesk, and Cointelegraph. I am a frequent speaker and panelist at tech and blockchain conferences around the globe. I serve as a start-up mentor at Axel Springer Accelerator, NY Edtech Accelerator, Seedstars, and Learnlaunch Accelerator. I love hackathons and often serve as a technical judge on hackathon panels.

View Comments

Recent Posts

Blockchain in Elections: A Leap Toward Transparent Democracy

In 2024 we're witnessing a critical point in democratic technology: the integration of blockchain and…

3 weeks ago

Win Big with Our Amazon Fire Max 11 & AirPods Pro Giveaway!

We’re thrilled to announce an exciting opportunity for you to win not one but two…

2 months ago

Unleashing Potential: How Education Ecosystem Transforms Learning into Real-World Success

Acquiring practical skills is crucial for career advancement and personal growth. Education Ecosystem stands out…

4 months ago

The Role of Artificial Intelligence in Modern Software Development

Artificial Intelligence (AI) has been making significant strides in various industries, and the software development…

7 months ago

Highest Stable Coin Yields – (W16 – 2024)

Another week to bring you the top yield platforms for three of the most prominent…

8 months ago

LEDU Token OTC Trading

If you hold a large volume of LEDU tokens above 1 million units and wish…

9 months ago