我最近开始担任学生助理,我必须用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"])
现在,我的问题是如何从python初始化matlab来模拟此文件并将结果存储在某个地方。
我非常感谢您的帮助。
答案 0 :(得分:0)
我认为您可以为该任务使用子流程模块。让我们假设您可以通过命令matlab -nodisplay -nosplash -r matlab_command
运行/执行MatLab脚本。
然后您应该在脚本中添加一行:
import subprocess
run_command='matlab -nodisplay -nosplash -r matlab_command'
subprocess.call(run_command, shell=True)
我认为subprocess
将等待MatLab完成并在此之后继续执行脚本。
子进程还具有方法check_call
,该方法可用于检测命令是否有效。无论如何,MatLab必须可用于该系统,即必须安装它。