0

私はpython subprocess.Popenで立ち往生しています。私が望むのは、オクターブプロセスを開始することだけです

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 x64 を実行します。

4

1 に答える 1

0

「subprocess.list2cmdline」は、パスを構築するために使用されます。スペースと引用符はすべて変換されます。したがって、次の引数リストは正しいです。

args = ["octave.exe", "--eval", '1+1']
print(subprocess.list2cmdline(args))
于 2012-04-09T09:18:16.463 に答える