Python: uruchamianie zewnętrznego programu

Załóżmy, że mamy program napisany w C++, który pobiera ze standardowego wejścia jedną liczbę, a następnie informuje nas jaką liczbę wpisaliśmy. Kod takiego programu wyglądałby pewnie tak:

#include
using namespace std;

int main()
{
    int in;
    cin >> in;
    cout < < "Wpisano liczbe: " << in << endl;     return 0; } [/sourcecode] Teraz załóżmy, że chcemy taki program uruchomić z innego programu pisanego w C++. Już bierze was nerwica? 😉 Jeśli programujecie w Windowsie, to pewnie tak. W Linuxie nie jest to taki wielki problem bo łatwo można to zadanie zrealizować używając funkcji popen(). Tak czy inaczej w systemie z Redmond jest to prawdziwy pain in ass, że tak to ujmę…

W Pythonie z kolei kod wykonujący to zadanie jest nienaturalnie (dla programistów C/C++ przynajmniej) krótki i wygląda tak:

#!/usr/bin/python

import subprocess as sub

p = sub.Popen([„./a.out”], stdin=sub.PIPE, stdout=sub.PIPE, stderr=sub.STDOUT)

child_output, child_error = p.communicate(input=”234″)
print child_output

I w ten sposób można uruchomić zewnętrzny program przejmując kontrolę nad jego I/O we wszystkich systemach na których zaimplementowany jest Python. Cudowne prawda? ^^
Btw.: wiem, że za bardzo się zachwycam 😛

Reklamy

4 myśli nt. „Python: uruchamianie zewnętrznego programu

  1. Za to w Pythonie samo uruchomienie z przekierowanymi STDIN, -OUT, -ERR to kwestia jednej linijki 🙂

    No ale można byłoby się tego spodziewać po językach tak wysokiego poziomu 🙂

    A ktoś wie jak to jest w Javie?

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s