如何在Python中的文件夹中运行Tcl脚本?

时间:2014-05-28 09:26:45

标签: python tcl

我有一个存储在C:/中的Tcl脚本 我如何从Python运行它? (它不是在python中编写Tcl脚本然后运行它)

为了澄清我的问题,首先我有一个名为oommf的基于Tcl的程序,用于模拟。这是一篇简短的介绍http://math.nist.gov/oommf/

我通过这个程序编写了一些脚本,并希望使用python运行一系列模拟,然后提取数据以绘制一些图形。 .mif格式的脚本,以及我希望做的是

  1. 每次使用不同的参数
  2. 时,使用python生成.mif脚本
  3. 使用python调用基于Tcl的程序来运行脚本
  4. 保存数据并使用python提取并绘制图表
  5. Tcl程序采用.tcl格式。

    Tcl程序也可以在命令行中运行。我听说有一些方法可以在python中模拟命令行(在windows环境中),但我不知道,如果有人知道,它会有所帮助。

    (抱歉,我以前的编程知识只有一点C,这就是为什么我的问题可能含糊不清,因为我不知道如何更清楚地描述它)

2 个答案:

答案 0 :(得分:0)

尝试使用subprocess.call

subprocess.call将避免必须处理各种shell的引用约定的问题。它接受一个列表而不是字符串,因此参数更容易分隔。即。

import subprocess
subprocess.call(['C:\\Temp\\a b c\\Notepad.exe', 'C:\\test.txt'])

答案 1 :(得分:0)

这是一个建议。其中大部分是猜测,因为我不知道你想要做什么。

import subprocess

# 1. Code to generate .mif script, for example: my.mif
with open('my.mif', 'wb') as f:
    f.write('something')

# 2. Launch oommf. I am guessing the command line, based on your 
# description and based on what the location of tclsh in my system
cmd = ['C:/Tcl/bin/tclsh.exe', 'C:/oomf.tcl', 'my.mif']
process = subprocess.Popen(cmd, 
        stdout=subprocess.PIPE, 
        stderr=subprocess.PIPE)
stdout, stderr = process.communicate()

# 3. Now, you can do something with stdout and stderr if needed
# Below is just an example
with open('data.txt', 'wb') as f:
    f.write(stdout)