如何在Python中运行文件夹中的Tcl脚本?
我在C盘里有一个Tcl脚本,想知道怎么从Python里运行它?(不是把Tcl脚本写在Python里再运行)
为了更清楚地说明我的问题,首先我有一个基于Tcl的程序叫做oommf,用于模拟。这里有个简单的介绍 http://math.nist.gov/oommf/
我用这个程序写了一些脚本,想用Python来运行一系列模拟,然后提取数据来画图。我的脚本是.mif格式的,我想做的是:
- 用Python生成.mif脚本,每次用不同的参数
- 用Python调用这个基于Tcl的程序来运行脚本
- 保存数据,然后用Python提取数据并画图
这个Tcl程序是.tcl格式的。
这个Tcl程序也可以在命令行里运行。我听说在Python中(在Windows环境下)有办法模拟命令行,但我不知道怎么做。如果有人知道,这对我会很有帮助。
(抱歉,我之前的编程知识只有一点C语言,所以我的问题可能有点模糊,因为我不知道怎么更清楚地描述它)
2 个回答
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)
0
可以试试用 subprocess.call。
subprocess.call 可以避免处理不同命令行环境中引号使用规则的问题。它接受一个列表,而不是字符串,这样参数之间的分隔就更简单了。也就是说:
import subprocess
subprocess.call(['C:\\Temp\\a b c\\Notepad.exe', 'C:\\test.txt'])