我知道如何从Python启动Stata。这里我有一个小程序
def dostata(dofile, *params):
## Launch a do-file, given the fullpath to the do-file
## and a list of parameters.
cmd = ["C:\Program Files (x86)\Stata13\StataMP-64.exe", "do", dofile]
for param in params:
cmd.append(param)
a = subprocess.Popen(cmd, shell=True)
path = "C:/My/do/file/dir/"
filename = "try.do"
dostata(path + filename, model, "1", "")
这或多或少起作用了。但这并不能保证Stata项目能成功完成。如何从Stata得到一些反馈给Python说“已成功完成”?在
子流程使用
returncode
返回底层调用进程的成功(零)或失败的(非零)结果。在但是,Stata do文件并不完全是可执行文件,而是作为batch jobs运行。因此,Stata.exe文件将始终返回成功代码,因为无论
.do
代码输出如何,它都将始终运行。因此,考虑下面这个例子,Python读取Stata的日志并将其输出到控制台,以便用户查看代码结果。甚至可能要求Python扫描日志文件中的任何Stata error code、r(1)
-r(9999)
,如果日志文件中存在,则强制Python向其发送消息。在相关问题 更多 >
编程相关推荐