2017-03-19 3 views
1

와 TCL 스크립트에서 파이썬 스크립트를 실행하기 나는 다음과 같은 TCL 스크립트가 있습니다어떻게 인수

puts "The total number of arguments is $argc" 
if {$argc > 0} {puts "The arguments in ARGV are: $argv" } 
exec python $argv/../scripts/sim/sim_comp_gen.py 

가 어떻게 파이썬 스크립트를 간부 인 ANS 그것을는 $ ARGV를 통과 할 수 있습니까?

답변

1

{*} 구문은 키 여기에 있습니다 :

exec python ../scripts/sim/sim_comp_gen.py {*}$argv 

스크립트의 이름이 상대하고있는 경우, 그 $argv0에 그리고 Tcl의 일부가 내장 된 유틸리티 쉬운 것을 만들기위한 있습니다

set script [file join [file dirname $argv0] scripts/sim/sim_comp_gen.py] 
exec python $script {*}$argv 

은 Windows에서 file nativename이 필요합니다. (파이썬은 슬래시 타입/변환을 무시 않을 경우 기억이 없습니다.) {*}를 지원하지 않는 티클의 아주 오래된 버전에

set script [file join [file dirname $argv0] scripts/sim/sim_comp_gen.py] 
exec python [file nativename $script] {*}$argv 

를?

set script [file join [file dirname $argv0] scripts/sim/sim_comp_gen.py] 
eval [list exec python $script] $argv 

키는 일 - 송곳니 해제 할 list을 사용하는 것입니다 ... eval주의 깊게를 사용합니다. 파일 이름에 공백과 같은 까다로운 요소가있는 경우에도 작동합니다.

1

도날의 솔루션이 가장 좋습니다. 아래에서 시도해 볼 수도 있습니다.

exec echo "python_script_name.py argument1 argument2" > ./tempfile 
exec chmod +x ./tempfile 
exec ./tempfile 

알려 주시면 알려드립니다.