Python—如何从shell读取stdin,并将stdout发送到shell和文件
我希望有一个Python脚本从shell(bash)读取stdin,并将stdout以及重定向文件发送到shell。我尝试了以下方法:Python—如何从shell读取stdin,并将stdout发送到shell和文件,python,bash,Python,Bash,我希望有一个Python脚本从shell(bash)读取stdin,并将stdout以及重定向文件发送到shell。我尝试了以下方法: $ 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 出于某种原因,原始输入提示是在我键入输入后打印的,这意
$ 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
看到这个bug,看起来raw_输入将其提示符写入stderr 或
我认为这不是问题所在。我尝试了与OP相同的方法,但使用了
打印输出提示,结果是一样的。它确实如此,只是没有潮红,你会看到相同的症状-请参阅tMCs答案
#!/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