我有一个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
文件:
/* 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输出集成。这是否可能?
print("Do file running...")
。我的主要愿望是在控制台中有视觉证据表明 Stata 正在后台执行某些操作。 - Ben Southgatesubprocess.call(["tail", "-F", logfilename])
只有在上面的call("\"{0}\" do /e \"{1}\"".format(Stata_exec, dofile), shell=True)
完成后才会执行,从而达不到预期效果?虽然我对subprocess
还不熟悉,所以可能完全错了。 - Ben Southgate