是否可以在Python CLI腳本中結合管道輸入和TTY提示?例如,運行以下命令:Python中的管道和提示CLI腳本
import sys
piped_text = None
if not sys.stdin.isatty():
piped_text = sys.stdin.read()
user_in = raw_input('Enter something: ')
if piped_text:
sys.stdout.write(piped_text)
sys.stdout.write(user_in + '\n')
產生以下輸出:
~: python mrprompt.py
Enter something: something
something
~: echo foo | python mrprompt.py
Enter something: Traceback (most recent call last):
File "mrprompt.py", line 9, in <module>
user_in = raw_input('Enter something: ')
EOFError: EOF when reading a line
當我在尋找的輸出是這樣的:
~: python mrprompt.py
Enter something: something
something
~: echo foo | python mrprompt.py
Enter something: something
foo
something
我想,措辭不同,它是子shell可能知道它的父shell的tty?是否有可能在Python中與父shell的tty進行交互?我在GNU Screen中使用bash(因此,閱讀'SSH_TTY'環境變量不是一個可行的選擇)。
我認爲這應該適用於一切(至少是常見的),但Windows。 Mac OS X有/ dev/tty對嗎? – yam655 2011-06-11 01:49:17
@ yam655 - 我一直認爲OS X_is_ Unix就Python而言:-)。但你是對的。 – Nemo 2011-06-11 01:56:17
謝謝!是的,這是我一直在尋找的解決方案。目前,我只支持Linux,它在Linux上運行良好。 – jorelli 2011-06-12 20:04:22