1

我有一个 python 脚本,它需要一个来自 shell 脚本的值。

以下是 shell 脚本 (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:没有名为 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.check_output而不是 Subprocess.call

Subprocess.call返回该脚本的返回码。
Subprocess.check_output返回脚本输出的字节流。

python 3.3 文档站点上的 Subprocess.check_output

于 2013-06-21T14:57:37.703 回答