1

シェル スクリプトからの値を必要とする python スクリプトがあります。

以下はシェル スクリプト (a.sh) です。

#!/bin/bash
return_value(){
  value=$(///some unix command)
  echo "$value"
}

return_value

以下はpythonスクリプトです:

Import subprocess
answer = Subprocess.call([‘./a.sh’])
print("the answer is %s % answer")  

エラーは「ImportError : No module named subprocess」です。私のバージョン (Python 2.3.4) はかなり古いと思います。この場合に適用できるサブプロセスに代わるものはありますか??

4

2 に答える 2

7

使用subprocess.check_output:

import subprocess
answer = subprocess.check_output(['./a.sh'])
print("the answer is {}".format(answer))

ヘルプsubprocess.check_output:

>>> print subprocess.check_output.__doc__
Run command with arguments and return its output as a byte string.

デモ:

>>> import subprocess
>>> answer = subprocess.check_output(['./a.sh'])
>>> answer
'Hello World!\n'
>>> print("the answer is {}".format(answer))
the answer is Hello World!

a.sh:

#!/bin/bash
STR="Hello World!"
echo $STR
于 2013-06-21T15:03:52.137 に答える
3

Subprocess.callの代わりに Subprocess.check_outputを使用します。

Subprocess.callは、そのスクリプトのリターン コードを返します。
Subprocess.check_outputは、スクリプト出力のバイト ストリームを返します。

Python 3.3 ドキュメント サイトの Subprocess.check_output

于 2013-06-21T14:57:37.703 に答える