Python - 如何从shell读取stdin,并将stdout发送到shell和文件
我想写一个Python脚本,让它从命令行(bash)读取输入,同时把输出发送到命令行和一个重定向的文件。我试过以下方法:
$ cat test.py
#!/usr/bin/python
val = raw_input("enter val: ")
print val
$ ./test.py | tee out
testing
enter val: testing
$ cat out
enter val: testing
但不知道为什么,当我输入内容时,提示符会在我输入后才显示出来,这样我在输入时看不到提示符。在bash脚本中,我可以做到类似的效果。
$ cat test.sh
#!/bin/bash
echo "enter val: "
read val
echo $val
$ ./test.sh | tee out
enter val: testing
testing
$ cat out
enter val: testing
2 个回答
1
看看这个问题,似乎是raw_input在输出提示信息时写到了错误输出流(stderr)里。
2
#!/usr/bin/python
import sys
print "enter val: ",
sys.stdout.flush()
val = raw_input()
print val
或者
#!/usr/bin/python
import sys
sys.stdout = sys.stderr
val = raw_input("enter val: ")
sys.stdout = sys.__stdout__
print val