Как запустить do-файл Stata из Python в MacOS - PullRequest
0 голосов
/ 21 июня 2020

Я новичок в Python и пытаюсь запустить do-файл Stata из Python, с помощью MacOS .

Следуя совету в этом вопросе: Запустить файл Stata do из Python

Я пробовал следующий код:

dofile = folder_path + "stata_dofile.do"
cmd = ["C:/Program Files (x86)/Stata14/StataSE-64", "do", dofile, variable1, variable2]
subprocess.call(cmd) 

где «dofile» - это файл Stata do, который я хочу выполнить, а «переменная1» и «переменная2» - некоторые строковые переменные, которые я хочу передать в Stata.

Этот код отлично работает с Windows. Но когда я пытаюсь адаптировать его к Ma c следующим образом:

dofile = folder_path + "stata_dofile.do"
cmd = ["/Applications/Stata/StataMP.app", "do", dofile, variable1, variable2]
subprocess.call(cmd) 

, я получаю сообщение об ошибке «В разрешении отказано».

Следуя другим советам на этом форуме, я удалось открыть приложение Stata из Python на моем Ma c, используя следующий код:

cmd = ["/usr/bin/open", "/Applications/Stata/StataMP.app"]
subprocess.call(cmd)

Но это открывает только Stata, и я не знаю, как изменить код, чтобы заставить его выполнить do-файл, указанный выше.

В основном я понятия не имею, что делаю. Был бы очень признателен за любые советы!

1 Ответ

0 голосов
/ 09 августа 2020

Я понял это!

Предположим, у нас есть файл test.do на рабочем столе, например:

sysuse auto, clear

fsum price mpg, s(mean median sd max min) f(%12.3f)

Мы не должны использовать StataSE.app, вместо этого мы должны открыть его содержимое пакета:

import subprocess

cmd = ["/Applications/Stata/StataSE.app/Contents/MacOS/StataSE", "do", "/Users/apple/Desktop/test.do"]

subprocess.call(cmd) 

Надеюсь, это будет полезно

...