Uruchomienie programu ze skryptu

Aby w Pythonie uruchomić inny program, możemy w tym celu użyć funkcję system() z modułu os. Problem jest w przypadku, jeśli chcemy odczytać rezultat działania uruchomionego programu, tzn.

import os
result = os.system('df -h')
print(result)

Powyższy program wyświetli w konsoli wynik działania programu df, ale wartością zmiennej result jest kod błędu wykonania funkcji os.system(). Jeżeli chcemy, aby zmienna result przechowywała rezultat zwracany przez program, to zamiast funkcji system() należy użyć funkcję popen() lub jej nowszy odpowiednik – klasę Popen z modułu subprocess. tzn.

# 1 first option - function popen()
import os
result = os.popen('df -h').read()
print(result)

# 2 second option - Popen class
import subprocess
command = subprocess.Popen('df -h', shell=True, stdout=subprocess.PIPE)
result = command.stdout.read().decode('utf-8')
print(result)