使用Python脚本问题通过Shell调用MATLAB

时间:2013-07-02 21:38:32

标签: python bash matlab shell scripting

我遇到了这个电话无法解决的问题:

os.system('matlab -nodisplay -nosplash -r \"processFates;dlmwrite(\'' + FWHM + ' ' + volume      + ' ' + key + ' ' + str(numTrials) + '\", min_timing)\"')

FWHM,音量,键都是字符串。我不断得到一个额外的错误)但似乎我需要所有这些。

1 个答案:

答案 0 :(得分:2)

让我们尝试一些值:

>>> FWHM, volume, key, numTrials, min_timing = 'a', 'b', 'c', 'd', 'e'
>>> print('matlab -nodisplay -nosplash -r \"processFates;dlmwrite(\'' + FWHM + ' ' + volume      + ' ' + key + ' ' + str(numTrials) + '\", min_timing)\"')
matlab -nodisplay -nosplash -r "processFates;dlmwrite('a b c d", min_timing)"

d之后看到双引号?那应该是单引号。此外,您传递的min_timing是文字字符串min_timing,而不是您期望的变量。

使用subprocess.Popen而不是os.system,您可以通过不依赖shell并将参数直接作为字符串传递来避免出现这些问题:

command = "processFates; dlmwrite('%s %s %s %s', %s)" % (FWHM, volume, key, numTrials, min_timing)
proc = subprocess.Popen(['matlab', '-nodisplay', '-nosplash', '-r', command])