Вызов файлов Maxima из Python скрипта - PullRequest
1 голос
/ 02 августа 2020

EDIT: оказалось, что оболочка модуля подпроцесса не имеет тех же каталогов, назначенных переменной PATH, что и оболочка моей системы. Таким образом, решение состоит в том, чтобы либо вызвать Maxima, используя полный путь (найденный через which maxima), либо изменить env={'PATH':maxima_paths} в параметрах subprocess.run (). Как отметил @RobertDodier, это не проблема конкретно Maxima.

У меня есть файл под названием testMaxima.txt, который содержит следующий код Maxima:

write_data([[1,2,3]], "test.txt");

Этот код Maxima создает файл test.txt в рабочем каталоге.

Я хочу запустить этот файл с помощью сценария Python. Я не хочу вручную открывать Maxima (математический движок) для этого.

Что я пробовал: я знаю, что могу запустить этот файл в командной строке / терминале, используя maxima -b testMaxima.txt, и я пытались использовать python модуль subprocess для эмуляции этого кода со следующим кодом python:

import subprocess
subprocess.run("maxima -b testMaxima.txt", shell=True)

, но это не создает новый файл test.txt, как должен. Если это помогает, когда я запускаю

>>> subprocess.call("maxima -b testMaxima.txt", shell=True)
127

, я получаю 127. Насколько я понимаю, это означает, что терминал не может найти данные команды. Однако, когда я выполняю код maxima -b testMaxima.txt через терминал напрямую, проблем не возникает, поэтому я не уверен, почему он не может найти данные команды. Есть ли у кого-нибудь мысли о том, что мне следует попробовать?

Заранее спасибо!

РЕДАКТИРОВАТЬ: Из совета @mkrieger я использую строку "maxima -b testMaxima.txt" вместо последовательности ["maxima", "-b", "testMaxima.txt"]. К сожалению, это не имеет значения.

1 Ответ

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

как насчет использования os.system в python.

import os
os.system('maxima -b testMaxima.txt')

Также убедитесь, что вы запускаете этот python скрипт в том месте, где присутствует файл testMaxima.txt

...