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

我正在尝试在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)。并且它至少尝试运行命令,但是由于" '\ "的混乱,它看不到所需的'

如何正确地排除引号?

python参考方案

通过多个外壳转义引号是一场噩梦。原则上,您应该同时转义\'字符,从而导致\\\'

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

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

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

run('/Test/TF03_MatLabCommands_and_results.m')

是相同的

run Test/TF03_MatLabCommands_and_results.m

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

Python pytz时区函数返回的时区为9分钟 - python

由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python:同时在for循环中添加到列表列表 - python

我想用for循环外的0索引值创建一个新列表,然后使用for循环添加到相同的列表。我的玩具示例是:import random data = ['t1', 't2', 't3'] masterlist = [['col1', 'animal1', 'an…

查找字符串中的行数 - python

我正在创建一个python电影播放器​​/制作器,我想在多行字符串中找到行数。我想知道是否有任何内置函数或可以编写代码的函数来做到这一点:x = """ line1 line2 """ getLines(x) python大神给出的解决方案 如果换行符是'\n',则nlines …