执行提示用户输入的Python脚本的bash脚本

1 投票
1 回答
1259 浏览
提问于 2025-04-18 14:33

我有一个Python脚本,有时候会要求用户输入一些信息,像这样:
raw_input('请提供foo')

我还有一个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脚本,并在需要的时候通过交互式命令行给Python脚本的提示输入内容。

但是当我运行bash脚本时,我看不到Python的提示信息。

我也试过不加-i这个选项,但还是没用。
有没有办法解决这个问题呢?

1 个回答

0

很难区分提示字符串和脚本输出,所以需要用一个不同的文件来从Python写入你的提示。下面是一个使用tty的例子,但你也可以使用stderr来显示提示:

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脚本:

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

撰写回答