1

この通話で問題が発生していて、解決できないようです:

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

FWHM、ボリューム、キーはすべて文字列です。余分な ) のエラーが発生し続けますが、ここではそれらすべてが必要なようです。

4

1 に答える 1

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 はリテラル stringmin_timingであり、期待している変数ではありません。

subprocess.Popen代わりに使用os.systemすると、シェルに依存せず、引数を文字列として直接渡すことで、エスケープに関するこれらの問題のいくつかを回避できます。

command = "processFates; dlmwrite('%s %s %s %s', %s)" % (FWHM, volume, key, numTrials, min_timing)
proc = subprocess.Popen(['matlab', '-nodisplay', '-nosplash', '-r', command])
于 2013-07-02T21:42:39.750 に答える