2012-04-09 45 views
0

我被困在python subprocess.Popen。我想要的是與通過子進程模塊從python調用八度

process = subprocess.Popen(['octave.exe', '--eval "1+1"'], stdout=subprocess.PIPE) 
process.wait() 
print(process.stdout.read()) 

啓動倍頻過程,但我得到的是

octave.exe: unrecognized option '--eval "1+1"' 

usage: octave [-HVdfhiqvx] [--debug] [--echo-commands] [--eval CODE] 
    [--exec-path path] [--help] [--image-path path] [--info-file file] 
    [--info-program prog] [--interactive] [--line-editing] 
    [--no-history] [--no-init-file] [--no-init-path] [--no-line-editing] 
    [--no-site-file] [--no-window-system] [-p path] [--path path] 
    [--silent] [--traditional] [--verbose] [--version] [file] 

當我打電話倍頻從殼我得到

Shell: octave --eval "1+1" 
GNU Octave, version 3.6.1 
Copyright (C) 2012 John W. Eaton and others. 
This is free software; see the source code for copying conditions. 
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or 
FITNESS FOR A PARTICULAR PURPOSE. For details, type `warranty'. 

Octave was configured for "i686-pc-mingw32". 

Additional information about Octave is available at http://www.octave.org. 

Please contribute if you find this software useful. 
For more information, visit http://www.octave.org/help-wanted.html 

Read http://www.octave.org/bugs.html to learn how to submit bug reports. 

For information about changes from previous versions, type `news'. 

ans = 2 

系統運行Windows 7 64位系統。

回答

0

「subprocess.list2cmdline」用於構建路徑。任何空格和引號將被轉換。因此下面的參數列表是正確的。

args = ["octave.exe", "--eval", '1+1'] 
print(subprocess.list2cmdline(args))