Я недавно начал работать ассистентом ученика, и мне нужно написать сценарий в Pycharm (python), который для меня что-то новое.
Моя задача - написать скрипт python, который берет файл Matlab (.m файл) с сервера, выполнять его и сохранять результаты этого файла в другой папке.
Я создал функцию, которая возвращает путь к файлу matlab с сервера, который я хотел бы имитировать, как показано ниже.
def get_next_job() -> Path:
host = '127.0.0.1'
port = 2000
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((host, port))
s.sendall(json.dumps({"task_name": "next_simulation_file", "host_name": socket.gethostname()}).encode())
received = s.recv(1024)
m = received.decode()
message = json.loads(m)
return Path(message["next_simulation_file"])
Теперь, мой вопрос: как инициализировать matlab из python, чтобы имитировать этот файл и где-то хранить результаты.
Я очень благодарен за помощь.
Я думаю, вы могли бы использовать модуль подпроцесса для задачи. Предположим, вы можете запустить/выполнить скрипт MatLab с помощью команды: matlab -nodisplay -nosplash -r matlab_command
.
Затем вы должны добавить строку в свой скрипт:
import subprocess
run_command='matlab -nodisplay -nosplash -r matlab_command'
subprocess.call(run_command, shell=True)
Я думаю, что subprocess
будет ждать завершения MatLab и продолжит выполнение скрипта после этого.
В подпроцессе также есть метод check_call
, который может использоваться для определения того, работала команда или нет. В любом случае MatLab должен быть доступен для системы, то есть должен быть установлен.
/path_to_your_matlab/matlab $options matlab_script
. Не знаю, как это работает в Windows, но также должно работать, если имя исполняемого файла содержит весь путь какC:\\...\\matlab.exe
. Сложной частью могут быть файлы * m, расположенные удаленно на каком-либо сервере - не уверен, что MatLab может их напрямую запустить. Возможно, вам сначала нужно скачать скрипт, установить его в каком-то месте и запустить как локальный скрипт.