从Python调用Stata批处理:将Stata控制台输出管道到命令lin

2024-09-30 01:21:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python脚本,它调用几个Stata do文件:

from subprocess import call
Stata_exec = "D:/Stata 12 MP2/StataMP-64.exe"
dofile = "D:/Test.do" 
call( "\"{0}\" do /e \"{1}\"".format(Stata_exec, dofile), shell=True)

下面是一个测试do文件:

^{pr2}$

我希望将do文件的进度实时传输到控制台,这样它将与其他Python输出集成。在

这可能吗?在


Tags: 文件fromtestimport脚本formatcallexe
2条回答

自从这个问题被提出以来,许多工具已经出现并成熟起来。 现在,通过安装和 使用Jupyter kernel for Stata

pip install stata_kernel
python -m stata_kernel.install

这使得Jupyter笔记本电脑可以在Windows、Mac和Linux上运行的内核进行动态切换。合并 结果可以很容易地保存并以通常的方式导出。在

请注意,每次内核被切换时,它都是关闭的,没有什么是关闭的 保存在记忆中。因此,要充分利用这种方法 目前,最好运行自包含的Stata和Python 脚本。这些可以按任何顺序排列。在

当然,这只是一种方法,因为Jupyter笔记本在如何执行交互式代码和脚本方面提供了很大的灵活性。在

下面是一个使用Stata的auto玩具数据集的非常简单的示例:

^{pr2}$

实际上,这并不像许多年前提出的最初问题那样是一个“纯”Python控制台管道。尽管如此,如果不是更好的话,它可能是一个很好的解决方案,并且效果相当。在

您可以使用log命令将Stata会话的副本回显到文件中,也可以使用file命令将特定消息(如“dataa Created”)写入文本文件。Python应该能够用subprocess.call(["tail", "-F", logfilename])显示这样的文件

相关问题 更多 >

    热门问题