मैं अपने पाइथन प्रोग्राम को पाइप से इनपुट लेना चाहता हूं और बाद में टर्मिनल से इनपुट लेना चाहता हूं। this एसओ पोस्ट पढ़ने के बाद, मैंने sys.stdin को प्रतिस्थापित करने के लिए/dev/tty खोलने का प्रयास किया।पायथन: जब sys.stdin का मान बदल दिया गया है तो मैं जीएनयू रीडलाइन का उपयोग कैसे कर सकता हूं?
import sys
import readline
def tty_input(prompt):
with open("/dev/tty") as terminal:
sys.stdin = terminal
user_input = input(prompt)
sys.stdin = sys.__stdin__
return user_input
इस दृष्टिकोण के साथ समस्या यह है कि जीएनयू ReadLine जब sys.stdin! = Sys .__ stdin__ काम नहीं करता है। मैं कर्सर को स्थानांतरित करने या इतिहास को नेविगेट करने के लिए तीर कुंजियों का उपयोग नहीं कर सकता। मैंने इस मुद्दे के लिए एक पैच पढ़ा है जिसे here सबमिट किया गया था, लेकिन मुझे लगता है कि इसमें कुछ भी नहीं आया है।
यदि sys.stdin के मान को बदले बिना पाइप और टर्मिनल दोनों से इनपुट स्वीकार करने का कोई तरीका है, तो मैं सुझावों के लिए खुला हूं।
भी देखें इस बग रिपोर्ट: http://bugs.python.org/msg286521 – src