2014-07-24 151 views
1

我有一个python脚本,它有时会以
raw_input('please provide foo')的形式提示用户输入。bash脚本,它执行一个提示用户的python脚本

我有一个bash脚本,除其他事项外,执行的是python脚本:

NUM_OUTPUT=$(python -i create_lookup_txtfiles.py data-dir=/data/ad6813/pipe-data/Bluebox/raw_data/dump to-dir=/data/ad6813/caffe/data_info/$TASK_NAME bad-min=$BAD_MIN) 

我想运行这个bash脚本,并提供输入(作为用户,通过交互的shell)的python脚本的提示何时需要。

但是当我运行bash脚本时,我没有看到python提示符。

我也试过没有-i的标志,无济于事。
有没有办法解决这个问题?

+0

如何在shell脚本中运行python脚本? –

+0

你想要用户输入还是脚本自动输入? – perreal

+0

python脚本如何请求输入?它检测到它的运行环境吗? –

回答

0

很难区分提示字符串和脚本输出,因此需要使用不同的文件来从Python编写提示。以tty下面是一个例子,但你也可以使用标准错误的提示:

bash脚本:

m=$(python d.py) 
echo "OUTPUT $m" 

python脚本:

import os 
tty=os.open("/dev/tty", os.O_RDWR) 
os.write(tty, "Enter> "); 
s=raw_input("") 
print s 

同一bash脚本应该也使用stderr提示:

python script:

import sys 
sys.stderr.write("Enter> "); 
s=raw_input("") 
print s 
+0

这适用于输入,但打印仍然中断。 – Kasisnu

+2

将所有交互消息从python写入stderr。只把你想要捕捉的东西放到标准输出。 – perreal

+0

为什么要使用“print s”呢?他不应该只使用stderr进行打印吗? – Kasisnu