如何使用Tcl exec命令运行Python脚本

9 投票
1 回答
20383 浏览
提问于 2025-04-16 22:16

我有一个tcl驱动脚本,这个脚本会调用其他几个程序。
我想从我的tcl脚本中调用一个python脚本。
假设我的python脚本叫“1.py”。

#!/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)

而tcl脚本叫“1.tcl”。

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

这样写没有报错,但同时也没有执行python脚本里的操作。

在1.tcl中,应该用什么来替换“exec python 1.py”这段代码,才能正确调用python脚本呢?用exec能调用python脚本吗?

提前谢谢大家!!

1 个回答

18

你的tcl脚本定义了一个过程来执行一个python脚本,但没有调用这个过程。你需要在tcl脚本中添加一个调用:

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

call_python

另外,通过exec启动的进程所写入的任何内容都不会在你的终端上显示。你需要从exec调用中捕获这些内容,然后自己明确地打印出来:

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

call_python

撰写回答