2011-04-05 17 views
19

यह एक मूर्ख सवाल हो सकता है, लेकिन जैसा कि मुझे कोई जवाब नहीं मिल रहा है, मुझे इसे पूछना है।sys.stdin.readlines() इनपुट कैसे समाप्त करें?

इंटरैक्टिव अजगर मैं एक संदेश है जो मैं के साथ मिल संसाधित करने के लिए चाहते हैं:

>>> message = sys.stdin.readlines() 

सब कुछ ठीक काम करता है, लेकिन ... कैसे एक इनपुट हो रहा से इसे रोकने के लिए और इसे संदेश चर में बचाने के बनाने के लिए? Ctrl + c के साथ रोकना पूरी प्रक्रिया को रोकता है इसलिए कहीं भी सहेजने के लिए कोई इनपुट नहीं है। मुझे लगता है कि एक आसान जवाब है जो मुझे नहीं मिल रहा है ...

उत्तर

38

यूनिक्स आधारित प्रणाली के लिए:

हैलो, आप कर सकते हैं टेप: Ctrl

CtrlEOF भेजकर मानक इनपुट (stdin) बंद कर देता है ।

उदाहरण:

>>> import sys 
>>> message = sys.stdin.readlines() 
Hello 
World 
My 
Name 
Is 
James 
Bond 
# <ctrl-d> EOF sent 
>>> print message 
['Hello\n', 'World\n', 'My\n', 'Name\n', 'Is\n', 'James\n', 'Bond\n'] 

विंडोज के लिए:

विंडोज पर EOF भेजने के लिए, आप की जगह ले सकता Ctrlद्वारा घ Ctrlz

+0

बहुत धन्यवाद - बिल्कुल वही जो मैं खोज रहा था। जैसा कि आप दोनों ने एक ही समय में उत्तर दिया, मैं आपके दोनों उत्तरों को उखाड़ फेंक दूंगा। – Gandi

+0

आपका स्वागत है। –

4

CTRL-D का उपयोग करें।

message = sys.stdin.readlines() 
abc 
def 
<CTRL-D> 

# message == ['abc\n', 'def\n'] 
4

यह वह जगह है एक पुराना सवाल लेकिन यह विंडोज और विभिन्न कीबोर्ड लेआउट के बारे में अपडेट की आवश्यकता है।

तो न Ctrl + Z है और न ही CTRL + D ** विंडोज पर आप के लिए काम करते हैं और और आप भटक रहे हैं ऐसा करने पर जा रहा है:

  • जांच आप उपयोग कर रहे हैं डिफ़ॉल्ट अंग्रेज़ी कीबोर्ड लेआउट
  • यदि आप अलग अलग, गैर-डिफ़ॉल्ट कुंजीपटल लेआउट भाषा पट्टी में अंग्रेजी के लिए कीबोर्ड सेटिंग परिवर्तित करने का प्रयास है, तो परिवर्तन के बाद Ctrl + Z दबाकर देखें
  • यदि आप अभी भी उलझन में हैं, तो स्क्रीन पर देखें, जब आप ctrl + z दबाते हैं तो कमांड लाइन में क्या दिखाई देता है। आप क्या प्रतीक देखते हैं? जब मैं ctrl + z दबा रहा था, तो मैं इसे देख रहा था:^वाई, और जब गलती से मैंने ctrl + y दबाया, मैंने यह देखा है^ज़ेड, मैंने एंटर दबाया और इनपुट लिया गया, ईओएफ भेजा गया।

यह कुछ हद तक अजीब और counterintuitive है। मैंने कुछ समय पहले पॉलिश अक्षरों को शामिल करने के लिए चाबियाँ लेआउट बदल दिया था, लेकिन सभी सामान्य कुंजियां अपरिवर्तित बनी हुई हैं, ज़ेड अभी भी ज़ेड के लिए मैप करते हैं जब मैं सामान्य रूप से कीबोर्ड का उपयोग करता हूं, आमतौर पर ctrl + z मेरे कीबोर्ड में कुछ भी नहीं करता है, इसलिए मुझे बदला नहीं जाना चाहिए । लेकिन स्पष्ट रूप से cmd में यह अलग-अलग काम करता है, ताकि ctrl और z के बीच डिफ़ॉल्ट लिंक हो, मुझे डिफ़ॉल्ट लेआउट पर स्विच करना होगा, या EOF भेजने के लिए नियंत्रण y का उपयोग करना होगा।

+0

पवित्र बकवास, आपने मुझे बचाया। मुझे कोई संकेत नहीं था कि मैं क्या गलत कर रहा था और अंततः मुझे आपका जवाब मिला जहां आप कहते हैं कि 'मैंने एंटर दबाया' और मुझे अचानक पता था कि मैं क्या गलत कर रहा था। धन्यवाद! – snowe

1

विंडोज़ पर बस CTRL + Z करें और एंटर दबाएं

संबंधित मुद्दे