3

我有一个 Python 脚本,它调用了几个 Statado文件:

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文件:

/* Merge some big files */

clear *

// Create dataset A (8000 variables, 300 observations)
set obs 300
gen ID = _n
forval i = 1/8000 {
    gen variableA`i' = runiform()
}
tempfile dataA
save "`dataA'"

// Create dataset B (5000 variables, 300 observations)
clear 
set obs 300
gen ID = _n
forval i = 1/5000 {
    gen variableB`i' = runiform()
}

sort ID

// Attempt merge
merge 1:1 ID using `dataA'
exit, clear

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

这可能吗?

4

1 回答 1

2

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

于 2013-11-05T21:12:04.147 回答