gpt4 book ai didi

python - 运行 Python 命令以 ssh 到计算机并在该计算机上运行 MATLAB

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:07 25 4
gpt4 key购买 nike

我正在尝试在 Python3 中运行此命令。每个部分单独工作正常,但我无法让它们一起工作。

os.system('ssh -t user@computer \'cd /MatLabFolder; /Applications/MATLAB_R2017a.app/bin/matlab -r \"cd /Test; try, run(\'/Test/TF03_MatLabCommands_and_results.m\'); end; quit\"; bash -l\'')

目前TF03_MatLabCommands_and_results.m仅包含以下内容

in_dir_list={'/Volumes/promiseraid9/workspace/colleen/NewResiduals/Test/58514_TF03_default','/Volumes/promiseraid9/workspace/colleen/NewResiduals/Test/58514_TF03_mask10'};
out_dir_list={'/Volumes/promiseraid9/workspace/colleen/NewResiduals/Test/58514_TF03_default','/Volumes/promiseraid9/workspace/colleen/NewResiduals/Test/58514_TF03_mask10'};
in_dir_list

基本上,我只是让它打印出 in_dir_list 是什么,这样我就可以看到它正在工作。

现在,如果我已经ssh连接到我想要处理并运行的计算机

/Applications/MATLAB_R2017a.app/bin/matlab -r "cd /Test; try, run('/Test/TF03_MatLabCommands_and_results.m'); end; quit"

它按预期运行。所以我知道UNIX命令是正确的。但是,如果我运行第一个命令,MATLAB 不会像 Python 那样识别 "\' ",而只是将 ' 全部消除,以便运行命令MATLAB 最终成为

cd /Test; try, run(/Test/TF03_MatLabCommands_and_results.m); end; quit
|
Error: Unexpected MATLAB operator.

注意M文件和路径前后没有'

我也知道 ssh 命令也是正确的,因为运行它直到在 MATLAB 中运行命令为止也可以工作(这意味着我可以通过 ssh 连接到计算机,并打开 MATLAB)。它至少会尝试运行该命令,但由于 "'\" 困惑,它看不到所需的 '

如何正确转义引号?

最佳答案

通过多个 shell 转义引号是一场噩梦。原则上,您应该转义 \' 字符,导致 \\\':

run(\\\'/Test/TF03_MatLabCommands_and_results.m\\\')

但这取决于使用哪些 shell,以及这些 shell 如何解析字符串,最终得到的转义字符和引号的确切组合是什么。

一个更简单的解决方案是完全避免引号。在 MATLAB 中,

run('/Test/TF03_MatLabCommands_and_results.m')

相同
run Test/TF03_MatLabCommands_and_results.m

后者不需要引号,只要文件名中没有空格即可。

关于python - 运行 Python 命令以 ssh 到计算机并在该计算机上运行 MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55263848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com