我遇到了这个电话的问题,我似乎无法解决:
os.system('matlab -nodisplay -nosplash -r \"processFates;dlmwrite(\'' + FWHM + ' ' + volume + ' ' + key + ' ' + str(numTrials) + '\", min_timing)\"')
FWHM、音量、键都是字符串。我不断收到额外的错误),但似乎我需要所有这些。
让我们用一些值试试这个:
>>> 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 是文字 string 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])