【问题标题】:Calling MATLAB through Python but through Linux Command Terminal通过 Python 但通过 Linux 命令终端调用 MATLAB
【发布时间】:2013-06-28 05:55:51
【问题描述】:

我想运行某个通过 Ubuntu 12.04 命令终端调用 MATLAB 的 Python 脚本。脚本有这一行:

os.system("matlab -nojvm -nodisplay -nosplash -r "ReadFates5mm;quit"")

但它在 ReadFates 的最后一部分返回语法错误。我不知道如何修复它。

我知道有一种使用 matlab python 桥的方法,但我必须将我的 matlab 文件转换为函数。

谢谢!

【问题讨论】:

  • os.system('matlab -nojvm -nodisplay -nosplash -r "ReadFates5mm;quit"') ?或正确转义引号。
  • 知道了! ' ' 与 " " 有什么区别呢?
  • 添加了解释作为答案。
  • @alvarezcl "' 之间绝对没有区别。问题是,要在以" 分隔的字符串中包含文字",您应该使用反斜杠对其进行转义。例如。 "Say \"something\""' 也是如此:'Say \'something\''。为避免使用反斜杠,您可以使用不同的分隔符(例如,如果字符串包含 ",则使用 ' 作为分隔符,如果字符串包含 ',则使用 ")。顺便说一句:os.system shouldn't be used。将其替换为subprocess.call
  • 其实在某些脚本语言中使用" & ' 还是有细微差别的。 'something'许多 语言中的字符串文字。单引号字符串中的任何转义字符都被视为字面意思。 '$variable' 也不会在 bash 中扩展。等等。我不太确定在 python 中使用'"。我只是想告诉 OP,“"' 之间绝对没有区别”不是一个通用的声明。

标签: python linux matlab shell scripting


【解决方案1】:

你需要正确地引用字符串。

试试:

os.system('matlab -nojvm -nodisplay -nosplash -r "ReadFates5mm;quit"')
OR
os.system("matlab -nojvm -nodisplay -nosplash -r 'ReadFates5mm;quit'")

或者,您可以转义嵌套的双引号。

os.system("matlab -nojvm -nodisplay -nosplash -r \"ReadFates5mm;quit\"")

解释:

在您的代码中,

 os.system("matlab -nojvm -nodisplay -nosplash -r "ReadFates5mm;quit"")
           1                                      1'                22'

双引号开始于标记1,结束于市场1',而引号开始于2,结束于2'。 基本上,您需要使用\"1'2 处转义"

或者,您可以使用其他引号字符,'


更多详情,请搜索“字符串引用和转义字符”。

http://en.wikipedia.org/wiki/Escape_character#Programming_and_data_formats

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 2019-06-05
    • 2012-12-25
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多