2011-07-26 25 views
6

Mam skrypt skryptu tcl, który z kolei wywołuje kilka innych programów. Chcę wywołać skrypt Pythona z mojego skryptu tcl. powiedzmy to mój skrypt Pythona „1.py”jak uruchomić skrypty Pythona za pomocą komendy tcl exec

#!/usr/bin/python2.4 
import os 
import sys 
try: 
    fi = open('sample_+_file', 'w') 
except IOError: 
    print 'Can\'t open file for writing.' 
    sys.exit(0) 

i TCL skrypt jest „1.tcl”

#! /usr/bin/tclsh 
proc call_python {} { 
    exec python 1.py 
} 

ten nie daje żadnych błędów, ale w tym samym czasie robi nie wykonuje operacji obecnych w skrypcie pythona.

Co należy zastąpić fragment kodu "exec python 1.py" w 1.tc, aby wywołać skrypt Pythona? Czy można wywołać skrypt Pythona za pomocą komendy exec?

Z góry dziękuję !!

+0

Dlaczego nie używać wszędzie Pythona? – Keith

+0

mógł zostać użyty! Ale w tym momencie chcę ponownie użyć istniejącego już sterownika tcl, który mam. – usha

+1

@Keith, dlaczego nie używać TCL wszędzie? –

Odpowiedz

11

Twój skrypt tcl definiuje procedurę wykonywania skryptu Pythona, ale nie wywołuje tej procedury. Dodaj wezwanie do tcl skryptu:

#! /usr/bin/tclsh 
proc call_python {} { 
    set output [exec python helloWorld.py] 
    puts $output 
} 

call_python 

Ponadto, wszystkie zapisywane na stdout przez proces zapoczątkowany przez exec nie zostanie wyświetlona w terminalu. Będziesz musiał przechwycić go z wywołania exec, a wydruk jest jawnie:

#! /usr/bin/tclsh 
proc call_python {} { 
    set output [exec python helloWorld.py] 
    puts $output 
} 

call_python 
Powiązane problemy